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

时间:2012-03-15 16:56:14

标签: c++ vector replace find

我正在使用此代码替换字符串中的字母,它工作正常,但它删除了我需要保留的第一个字母。我只需要一个*在字符串的中心,但这个问题困扰了我。

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

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

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

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

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

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

这样你就可以删除第二个字符(pos + 1),并用一个星号替换它。

编辑:正如@Dan指出的那样,你也可以只指定角色:

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

答案 1 :(得分:1)

replace参数中的第二个参数指定要删除的字符数。将其更改为1,它应该做你想要的:

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