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

时间:2013-08-19 03:03:40

标签: c++ string

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

string s = "abc";
s[1] = 'a';

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

我没有找到任何有效的参考资料:

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

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

4 个答案:

答案 0 :(得分:11)

是的,以下C ++程序:

#include <iostream>

int main() {
    std::string s = "abc";
    s[1] = 'a';
    std::cout << s;
}

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

执行此操作的安全方法是使用string::replacehttp://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"