C++ 中的长度函数

问题描述 投票:0回答:1

我认为这段代码的输出应该是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。为什么?

c++ string function replace
1个回答
1
投票
与 C 字符串 (

string

) 不同,
C++
char*
对象支持嵌入空字节。如果您将任何位置的字节设置为 0(又名
'\0'
),它不会删除它或在任何位置终止字符串。该字符串将仅在您放置的位置包含一个空字节。

要在位置 2 处截断字符串(将其长度设置为 2):

test1.erase(2);

仅删除位置 2 处的一个字节(长度变小 1):

test1.erase(2, 1);
© www.soinside.com 2019 - 2024. All rights reserved.