【发布时间】:2015-12-12 04:42:03
【问题描述】:
我在这个网站上学习c风格的字符串教程: http://www.learncpp.com/cpp-tutorial/66-c-style-strings/ 还有一个代码sn-p:
#include <iostream>
int main()
{
char mystring[] = "string";
std::cout << mystring << " has " << sizeof(mystring) << 'characters.\n';
for (int index = 0; index < sizeof(mystring); ++index)
std::cout << static_cast<int>(mystring[index]) << " ";
return 0;
}
结果应该是: 字符串有 7 个字符。 115 116 114 105 110 103 0
但是,当我使用 Xcode 运行它时,它显示: *字符串有 71920151050115 116 114 105 110 103 0 *
并且还收到了有关“字符。\n”的警告。警告说“字符对于它的类型来说太长了,多字符字符常量”。
因此我将其更改为“字符。\n”(将 ' 替换为“),结果符合预期。
我的问题是这个问题是由于代码本身还是由于我的编译器?是书的错还是我的错?
【问题讨论】:
-
这是网站上的错误。它应该使用
"而不是'。在 C++ 中,"和'有不同的含义。 -
在c++中,单引号用于表示单个字符,而双引号用于表示字符串。所以多个字符需要使用双引号(
"),而单个字符需要使用单引号(')。