当使用反向循环逆转字符串时,null字符会发生什么
What happens to null character when string is reversed using reverse loop
我是新来的,在C 中有字符串。我只是与下面的代码的工作感到困惑(用于逆转字符串(。
std:: string rev;
for(int i= str.size()-1; i>=0; --i)
{
rev.push_back(str[i]);
}
std:: cout<<" Reversed= "<<rev<<endl;
问题是字符串的最后一个字符是null字符 ' '
。因此,当循环运行第一次迭代时,它应该在rev
的开头和另一件事时放置一个空字符,因此,由于' '
未分配为字符串的最后一个字符,因此字符串rev
可能不会被终止。
但是当我执行程序时,它可以正常工作。我知道我在思考这一切时错了。有人可以解释工作吗?我会高兴和感谢您:)
null终结器实际上并不是std::string
的一部分。仅当您致电c_str()
时才发挥作用。因此,size()
和length()
不包括终结器。实际上,您可以将空字符放入std::string
的中间,并且除了c_str()
之外,所有内容仍然可以使用(如果您的字符串可能包含nulls,则应使用data()
和size()
(。
自动添加'/0'运算符,因此您仅在'/0'之前循环直到字符。它基本上总是在那里,因此您没有看到任何更改。
相关文章:
- 将 NULL 与 C 的字符* 字符串一起使用
- 如何在 C++ 中使用 NULL(或 0)初始化静态字符数组
- 如何告诉字符串流忽略null终止字符
- C++ - 创建具有相同字符的特定大小的以 null 结尾的 c 样式字符串的更好方法
- 如何获取包含 NULL 字符的外壳代码字符串的长度
- 为什么具有单独字符的字符数组不像字符串文字那样以 null 终止符结尾?
- 如何在忽略 null 的同时将数据从 char [] 复制到常量字符 *
- 将 NULL 视为 QByteArray 中的字符
- 当使用反向循环逆转字符串时,null字符会发生什么
- NULL字符未出现在COUT中
- 将字符串指针与 NULL 以及 NULL 字符进行比较的目的
- 如何将 cin>> 与初始化的字符* 一起使用为 NULL
- 在std::字符串或字符数组中间包含NULL字符的UPDATE
- 打印超过 NULL 字符的内存内容
- 为什么strlen()比手动循环检查以null结尾的字符快20倍
- 为什么编译器在每个字符串字面的C 的末端附加null字符
- 在读取 Visual C++ 中的二进制文件(而不是其他编译器)后,每隔一个字符都是 NULL
- 字符串长度函数w.r.t为null字符时的奇怪行为
- 在不使用c++中的库函数的情况下,计算不包括null字符的字符串长度
- 是长度计数中包含的字符null终止符