字符串需要多少字节?一个炭?

Mos*_*she 10 c++ string character

我正在复习我的第一学期C++课程,我想我错过了一些东西.字符串占用多少字节?一个炭?

我们给出的例子是,一些是字符文字,一些是字符串:

'n', "n", '\n', "\n", "\\n", ""

我对那里的换行线的使用感到特别困惑.

fre*_*low 27

#include <iostream>

int main()
{
        std::cout << sizeof 'n'   << std::endl;   // 1
        std::cout << sizeof "n"   << std::endl;   // 2
        std::cout << sizeof '\n'  << std::endl;   // 1
        std::cout << sizeof 'n'   << std::endl;   // 1
        std::cout << sizeof "\n"  << std::endl;   // 2
        std::cout << sizeof "\\n" << std::endl;   // 3
        std::cout << sizeof "n"   << std::endl;   // 2
}
Run Code Online (Sandbox Code Playgroud)

单引号表示字符,双引号表示带有不可见NUL终止符的C样式字符串.

\n(换行符)只是一个字符,因此\\(反斜杠).\\n只是一个反斜杠,然后是n.

  • @Rob:由于''\n''已经是作业的一部分,我不想不必要地混淆Moshe. (16认同)
  • 使用我没有考虑过的`std :: endl`的正当理由.+1 (5认同)
  • 如果你解释这是作业,我会+1. (2认同)
  • 如果你将`std :: endl`改为''\n',我会给你+1. (2认同)

gzt*_*mas 10

  • 'n': 不是字符串,是文字字符,一个字节,字母 n 的字符代码。
  • "n": 字符串,两个字节,一个用于 n,一个用于每个字符串末尾的空字符。
  • "\n": 两个字节作为 \n 代表“换行”,它需要一个字节,加上一个字节的空字符。
  • '\n': 与第一个文字字符相同,不是字符串,一个字节。
  • "\\n": 三个字节.. 一个用于 , 一个用于换行符和空字符
  • "": 一个字节,只是空字符。


ild*_*arn 6

  • 根据char定义,A 占用一个字节.
  • 使用'的文字是字面文字; 文字使用"是字符串文字.
  • 字符串文字是隐式空终止的,因此它将比文字中可观察的字符数多占用一个字节.
  • \是转义字符,\n是换行符.

把这些放在一起,你应该能够搞清楚.


Woj*_*cha 5

以下将在内存中获取x个连续的字符:

'n' - 1 char (type char)
"n" - 2 chars (above plus zero character) (type const char[2])
'\n' - 1 char
"\n" - 2 chars
"\\n" - 3 chars ('\', 'n', and zero)
"" - 1 char
Run Code Online (Sandbox Code Playgroud)

编辑:格式化固定

edit2:我写了一些非常愚蠢的东西,谢谢Mooing Duck指出了这一点。