我正在使用此代码替换字符串中的字母,它工作正常,但它删除了我需要保留的第一个字母。我只需要一个*在字符串的中心,但这个问题困扰了我。
textWords[i].replace(pos, 2 , 1 , '*');
我替换中间字符的所有单词都是三个字符长,它总是摆脱第一个字符。替换函数是用于我没有写入的向量的函数,pos由下面的代码定义。
size_t pos = textWords[i].find(bannedWords[j]);
感谢任何帮助。
答案 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 , '*');