c++ - 带双引号的字符串初始化

标签 c++ c++11

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

const std::string spaces(greeting.size(), " ");

然而,直到我将双引号更改为单引号,这才起作用

const std::string spaces(greeting.size(), ' ');

字符串初始化中的引号有什么意义?我试过检查 http://www.cplusplus.com/reference/string/string/ , 但没有找到可以向我解释这一点的东西

最佳答案

双引号""在C++中是字符串字面量(用const char [N]表示),而单引号' '是一个字 rune 字 (char),因此您正在调用 (std::size_t, const char [N]) 构造函数。

它不存在,所以你得到一个编译错误。

您需要将其更改为可用的构造函数之一,例如:

string (size_t n, char c);
string (const char* s);

(您已经将第二个参数更改为 ' ')

关于c++ - 带双引号的字符串初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29587999/

相关文章:

c++ - 在 C++ 中实现 "contextmanager"的最佳实践 + 语法

c++ - 需要语法帮助以根据模板参数的类型专门化类方法

c++ - += 在没有 boost 的 vector 上

java - C++ 与 Java 中的多态性

c++ - c++中如何将字符串转换为string中提到的数据类型

c++可执行程序的分布式计算

c++ - VS 2012 中的可变参数模板(Visual C++ 2012 年 11 月 CTP)

c++ - 如何重构包含 vector 的非指针类成员?

initialization - 如何使用统一初始值设定项 "reduce typing to create C++ types"?

c++ - std::set 中索引处的元素?