我想在特定的索引处更改C ++字符串,如下所示:
string s = "abc";
s[1] = 'a';
以下代码是否有效?这是一种可以接受的方式吗?
我没有找到任何有效的参考资料:
http://www.cplusplus.com/reference/string/string/
其中说通过“字符串中的重载[]运算符”我们可以执行写操作。
答案 0 :(得分:11)
是的,以下C ++程序:
#include <iostream>
int main() {
std::string s = "abc";
s[1] = 'a';
std::cout << s;
}
打印aac
。如果string s是blankstring,你可能会意外写入未分配的内存。 C ++会让你这样做,并导致未定义的行为。
执行此操作的安全方法是使用string::replace
:http://cplusplus.com/reference/string/string/replace
答案 1 :(得分:1)
是。您链接的网站有一个关于它的页面。您还可以使用at函数执行边界检查。
http://www.cplusplus.com/reference/string/string/operator%5B%5D/
答案 2 :(得分:1)
是的,您编写的代码有效。您也可以尝试:
string num;
cin>>num;
num.at(1)='a';
cout<<num;
**Input**:asdf
**Output**:aadf
std :: replace也可用于替换charecter。以下是参考链接http://www.cplusplus.com/reference/string/string/replace/
希望这有帮助。
答案 3 :(得分:0)
您可以使用子字符串来实现此目的
string s = "abc";
string new_s = s.substr(0,1) + "a" + s.substr(2);
cout << new_s;
//you can now use new_s as the variable to use with "aac"