我认为这段代码的输出应该是8,因为
length
函数不应该计算空字符''。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string test1 = "abcdefghi";
test1[2] = '\0';
cout << test1.length()<< endl;
system("pause");
return 0;
}
我认为输出应该是 8,因为我将字节 2 更改为空值。但输出是 9。为什么?
string
) 不同,C++
char*
对象支持嵌入空字节。如果您将任何位置的字节设置为 0(又名 '\0'
),它不会删除它或在任何位置终止字符串。该字符串将仅在您放置的位置包含一个空字节。
要在位置 2 处截断字符串(将其长度设置为 2):
test1.erase(2);
仅删除位置 2 处的一个字节(长度变小 1):
test1.erase(2, 1);