【发布时间】:2016-11-08 07:30:52
【问题描述】:
我有一个问题,其中字符串的大小会受到'\0' 字符的影响。我在 SO 中搜索了所有内容,但仍然无法得到答案。
这里是sn-p。
int main()
{
std::string a = "123123\0shai\0";
std::cout << a.length();
}
这种情况下的输出是
6
在同一个程序中,不同的字符串使用数字而不是字符
int main()
{
std::string a = "123123\0123\0";
std::cout << a.length();
}
输出
8
幕后究竟发生了什么? '\0' 字符的存在如何改变行为?
【问题讨论】:
-
除非您非常清楚自己在做什么以及为什么,否则不要在字符串中放入空字符 (\0)!
-
如果你真的需要非空终止的字符串,你会想要使用
std::literals::string_literals::operator""s(C++14) 或std::string(char*, size_t)(如果你想记得包括最后的空一)。 -
请注意,您的第二个字符串将“shai”(四个字符)替换为“123”(三个字符),因此即使没有接受答案中提到的八进制序列,也会有所不同。