C++,在特定索引处更改字符串的最佳方法

Dav*_*vid 14 c++ string

我想在特定的索引处更改C++字符串,如下所示:

string s = "abc";
s[1] = 'a';
Run Code Online (Sandbox Code Playgroud)

以下代码是否有效?这是一种可以接受的方式吗?

我没有找到任何表明它有效的参考:

http://www.cplusplus.com/reference/string/string/

其中说通过"字符串中的重载[]运算符"我们可以执行写操作.

Eri*_*ski 14

是的,以下C++程序:

#include <iostream>
int main() {
    std::string s = "abc";
    s[1] = 'a';
    std::cout << s;
}
Run Code Online (Sandbox Code Playgroud)

打印std::string.如果string s是blankstring,你可能会意外写入未分配的内存.C++会让你这样做,它会导致未定义的行为.

这样做的安全方法是使用aac:http://cplusplus.com/reference/string/string/replace