gpt4 book ai didi

c++ - 为什么当字符改变时这个 std::string 的大小会改变?

转载 作者:IT老高 更新时间:2023-10-28 12:52:39 25 4
gpt4 key购买 nike

我有一个问题,其中字符串的大小受到 '\0' 字符的影响。我在 SO 中搜索了所有内容,但仍然无法得到答案。

这是片段。

int main()
{
std::string a = "123123\0shai\0";
std::cout << a.length();
}

http://ideone.com/W6Bhfl

这种情况下的输出是

6

在同一个程序中,不同的字符串使用数字而不是字符

int main()
{
std::string a = "123123\0123\0";
std::cout << a.length();
}

http://ideone.com/mtfS50

输出

8

幕后究竟发生了什么? '\0' 字符的存在如何改变行为?

最佳答案

序列 \012 在字符串(或字符)文字中使用时是一个 八进制 转义序列。它是对应于 ASCII 的八进制数 12换行('\n')字符。

这意味着您的第二个字符串实际上等于 "123123\n3\0" (加上实际的字符串文字终止符)。

如果你尝试打印字符串的内容会很清楚。

八进制序列的长度是一到三位,编译器会使用尽可能多的数字。

关于c++ - 为什么当字符改变时这个 std::string 的大小会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40481286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com