gpt4 book ai didi

c++ - 字符串末尾的额外零字符出现在 C++ 中用于范围循环

转载 作者:行者123 更新时间:2023-12-01 12:38:36 24 4
gpt4 key购买 nike

以下代码

#include <iostream>
#include <string>
int main()
{
std::string s = "abc";
for (char c : s)
std::cout << (int) c << " ";
}
打印“97 98 99”。
以下代码
#include <iostream>
int main()
{
for (char c : "abc")
std::cout << (int) c << " ";
}
打印“97 98 99 0”。
第二个代码中额外的 0 来自哪里?

最佳答案

文字 "abc"const char[4]类型:最后一个元素是 NUL 终止符(值为 0)。
在第二个片段中,当代码描述整个 const char[4] 的迭代时,会打印 NUL 终止符的值。大批。
在第一个片段中,std::string 的底层迭代器技术class 将结束迭代器(在简短形式 for 循环中未达到)设置为 NUL 终止符。此行为与 s.size() 一致.

关于c++ - 字符串末尾的额外零字符出现在 C++ 中用于范围循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62519018/

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