我正在做一些教程,并有这条线
const std::string spaces(greeting.size(), " ");
但是,直到我将双引号更改为单引号后,这种方法才起作用
const std::string spaces(greeting.size(), ' ');
字符串初始化中的引号有什么意义?我尝试检查http://www.cplusplus.com/reference/string/string/,但是没有找到可以向我解释的内容
C ++中有字符文字和字符串文字。
例如,用单引号引起来的字符(如“ A”)表示字符文字,表示一个字符并具有type char
。
如果将符号A括在双引号中,"A"
则得到的字符串文字具有类型cont char[2]
并具有内部表示形式,例如
{ 'A', '\0' }
也就是说,它由两个字符组成,包括结尾的零。
您可以看到运行此简单porgram的区别
#includde <iostream>
int main()
{
std::cout << "sizeof( 'A' ) = " << sizeof( 'A' ) << std::endl;
std::cout << "sizeof( \"A\" ) = " << sizeof( "A" ) << std::endl;
}
类std :: basic_string(或std :: string)具有以下构造函数
basic_string(size_type n, charT c, const Allocator& a = Allocator());
并在此声明中
const std::string spaces(greeting.size(), ' ');
使用此构造函数。它使用空格字符的greeting.size()初始化字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句