带双引号的字符串初始化

Avdept

我正在做一些教程,并有这条线

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章