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.
gzt*_*mas 10
'n': 不是字符串,是文字字符,一个字节,字母 n 的字符代码。"n": 字符串,两个字节,一个用于 n,一个用于每个字符串末尾的空字符。"\n": 两个字节作为 \n 代表“换行”,它需要一个字节,加上一个字节的空字符。'\n': 与第一个文字字符相同,不是字符串,一个字节。"\\n": 三个字节.. 一个用于 , 一个用于换行符和空字符"": 一个字节,只是空字符。char定义,A 占用一个字节.'的文字是字面文字; 文字使用"是字符串文字.\是转义字符,\n是换行符.把这些放在一起,你应该能够搞清楚.
以下将在内存中获取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指出了这一点。