【问题标题】:c-style string using single quote or double quote?使用单引号或双引号的 c 样式字符串?
【发布时间】: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++中,单引号用于表示单个字符,而双引号用于表示字符串。所以多个字符需要使用双引号("),而单个字符需要使用单引号(')。

标签: c++ quotes


【解决方案1】:

您的代码中有一个错字:在“characters.\n”周围使用双引号:

std::cout << mystring << " has " << sizeof(mystring) << "characters.\n";

Live Example.

您看到的带有 sinqle 引号的输出是一个多字符文字,其类型为 int 和一个实现定义的值。见this Q&A

【讨论】:

    猜你喜欢
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 2019-05-11
    • 2012-11-24
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多