c++ - 字符串 "Hello\0"是否等于 {'H' ,'e' ,'l' ,'l' ,'o' ,'\0' } 或 {'H' ,'e' 0x104 567910 ,'l' ,'l' ,'o'}?

标签 c++ c string

字符串“Hello\n”等于
{'H','e','l','l','o','\','n','\0'}
{'H','e','l','l','o','\n','\0'}?

是否在字符串定义中添加转义序列,例如:

char arr[] = "Hello\n";

创建如下字符串:

char arr[] = {'H','e','l','l','o','\','n','\0'};

或字符串:

char arr[] = {'H','e','l','l','o','\n','\0'};

也是每次使用诸如 char* foo = "HelloWorld!" 之类的声明时添加的 NULL 字符“\0”。

最佳答案

您的第二种解释是正确的,因为您正在谈论的转义序列(换行符)的长度只有 1 个字符。每次进行此类声明时,都会将 NULL 字符添加到末尾。

您的第一个解释不正确的原因是因为\是转义字符,这意味着它将转义后面的引号。您甚至可以在 Stack Overflow 的语法突出显示中看到这一点!

char arr[] = {'H','e','l','l','o','\','n',\0'};
//  See how the n is not highlighted --^

很明显,n 位于引号之外,并被解释为关键字或标识符。

关于c++ - 字符串 "Hello\0"是否等于 {'H' ,'e' ,'l' ,'l' ,'o' ,'\0' } 或 {'H' ,'e' 0x104 567910 ,'l' ,'l' ,'o'}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48476419/

相关文章:

C - 释放包含二维数组的结构

c++ 从 3 个浮点值生成 unordered_map 的键

c++ - 验证字符串是否只有数字且只有一定长度

C - 我不断收到 strtok() 的段错误

python - 如何加速 scipy.weave 中的多维数组访问?

Python:用不同的术语替换字符串中的嵌入函数

c++ - 将 ASCII 字符串转换为 long long

java - 如何在 Java 中比较 Resultset.getString() 和 String?

c++ - 单例 : C++ shared dll

c++ - STL链表::如何访问成员?