Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c++;,std::string::size()不计算修改的字符串长度_C++_String - Fatal编程技术网

C++ 在c++;,std::string::size()不计算修改的字符串长度

C++ 在c++;,std::string::size()不计算修改的字符串长度,c++,string,C++,String,我的代码如下: int main(){ string s = "abcd"; int length_of_string = s.size(); cout<<length_of_string<<endl; s[length_of_string] = 'e'; s[length_of_string+1] = 'f'; int length_of_string2 = s.size(); cout<<length

我的代码如下:

int main(){
    string s = "abcd";
    int length_of_string = s.size();
    cout<<length_of_string<<endl;
    s[length_of_string] = 'e';
    s[length_of_string+1] = 'f';
    int length_of_string2 = s.size();
    cout<<length_of_string2<<endl;
    return 0;
}
intmain(){
字符串s=“abcd”;
int length_of_string=s.size();

cout程序的行为未定义

std::string
的长度由
size()
返回

尽管允许您使用
[]
修改索引
size()
之前的字符串中的字符,但不允许在该索引上或之后修改字符


参考资料:

如果需要在字符串末尾插入字符,则应使用
std::string::push_back
函数:

int main(){
    string s = "abcd";
    int length_of_string = s.size();
    cout<<length_of_string<<endl;
    s.push_back('e');
    s.push_back('f');
    int length_of_string2 = s.size();
    cout<<length_of_string2<<endl;
    return 0;
}
intmain(){
字符串s=“abcd”;
int length_of_string=s.size();

cout这表明在字符串数组的
size
位置访问是未定义的字符串文字,C字符串被
\0
终止,但是对于
std::string
,您不能假设相同。此外,当您写入字符串大小以外的字符串元素时,您正在进行未定义的行为和任何操作可能发生-在任何情况下,代码都是错误的。
std::string
没有任何内容表明是空终止的。@JesperJuhl:的确,这是一个非常好的观点。我已经重写了。@JesperJuhl:C++11说
std::string
是空终止的。特别是,
std::basic_string::operator[](size\u type pos)
返回
CH{0}
when
pos==
std::basic_string::size()`。这是对C++98的更改。