来自C++ 字符串文字转义字符的规则,Eli 的回答
std::string ("0\0" "0", 3) // String concatenation
之所以有效,是因为此版本的构造函数采用 char 数组;如果您尝试将“0\0”“0”作为 const char* 传递,它会将其视为 C 字符串,并且只会复制所有内容,直到出现空字符。
这是否意味着没有为整个字符串分配空间,即 \0 之后的字符串写在未分配的空间上?
此外,上面的问题是针对 c++ 字符串的,我也观察到了 c 字符串的相同行为。当我在声明期间在字符串中间添加空字符时,c 和 c++ 字符串是否相同?