如何替换字符串中特定索引处的一个字符

时间:2015-02-12 22:36:31

标签: c++ string

我有一个程序,它接受一个字符串作为命令行参数。然后我想进入这个字符串并在特定索引处将一个字符替换为另一个字符。因此,对于一个更具体的例子,这就是我拥有的和我想做的事情:

string input(argv[2]); //lets say I run with ./Prog x bbbbbbb
//I want to do this
input.at(2) = "a"; //obviously this doesn't work

当我尝试input.insert(2,a);cout << input时,我会在下一行收到bb$bbbbb后跟一条seg错误消息。我最初认为我可以在2处插入并在3处擦除以用a替换第3个b,但是seg故障对我来说很难。那么我有没有其他方法可以做到这一点,或者帮助我理解为什么我会遇到一个段错误?

编辑:seg错误是其他的东西,但在尝试输入一个

时我仍然得到$

1 个答案:

答案 0 :(得分:4)

  

&#34;因此,对于一个更具体的例子,这就是我拥有的和我想做的事情:......

     

...那么还有其他方法可以做到这一点,或者帮助我理解为什么我会遇到一个段错误?&#34;

//I want to do this
input.at(2) = "a"; //obviously this doesn't work

它不起作用,因为"a"实际上提供const char*指针,而不是std::string::at()所要求的char
使用简单的字符文字,而不是c风格的字符串文字:

 input.at(2) = 'a';
            // ^^^

  

&#34;当我尝试input.insert(2,a);cout << input时,我会在下一行收到bb$bbbbb后跟一条seg错误消息。&#34;

除了std::string::insert()并未在给定位置提供替换字符,但在那里插入一个或多个字符,您可能拥有未初始化的char* a在此处传递,导致段错误。但最后要回答这一部分,你应该在这种情况下指定变量a实际上是什么。