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

How to replace one character at a specific index in a string

本文关键字:字符 一个 索引 何替换 替换 字符串      更新时间:2023-10-16

我有一个程序,它将字符串作为命令行参数。然后我想进入这个字符串,在特定的索引中用另一个字符替换一个字符。因此,举一个更具体的例子,这就是我所拥有的,也是我想做的:

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代替第三个b,但seg错误对我来说破坏了这一点。那么,有没有其他方法可以做到这一点,或者帮助我理解为什么我会出现seg错误?

edit:seg错误是另一回事,但当我试图输入时,仍然会得到$

"因此,对于一个更具体的例子,这就是我所拥有的和我想做的:…

。。。那么,有没有其他方法可以做到这一点,或者帮助我理解为什么我会出现seg错误?"

//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';
            // ^^^

"当我尝试input.insert(2,a);cout << input时,我会得到bb$bbbbb,然后在下一行显示seg故障消息。"

此外,std::string::insert()在给定位置不提供字符的替换,但在那里插入一个或多个字符,您可能在此处传递了未初始化的char* a,从而导致segfault。但要最终回答这一部分,您应该指定变量a在本文中的实际含义。

相关文章: