矢量字符串字符替换在字符串c++的中间

vector string character replace in middle of string c++

本文关键字:字符串 c++ 中间 替换 字符      更新时间:2023-10-16

我使用这段代码来替换字符串中的一个字母,它运行良好,但它删除了我需要保留的第一个字母。我只需要字符串中心的一个*,但这个问题困扰了我。

textWords[i].replace(pos, 2 , 1 , '*');

所有替换中间字符的单词都有三个字符长,而且总是去掉第一个字符。替换函数是用于向量的函数,我没有写它,pos由下面的代码定义。

 size_t pos = textWords[i].find(bannedWords[j]);

感谢您的帮助。

我相信您正试图用星号替换每个被禁单词的第二个字符。您必须使用以下参数调用std::string::replace:

textWords[i].replace(pos + 1, 1, 1 , '*');

通过这种方式,您将删除第二个字符(pos+1),并将其替换为一个星号。

编辑:正如@Dan所指出的,你也可以只分配字符:

textWords[i][pos + 1] = '*';

replace参数中的第二个参数指定要删除的字符数。将其更改为1,它应该可以执行您想要的操作:

textWords[i].replace(pos, 1 , 1 , '*');