在c ++中用字符串替换和删除字符?

时间:2015-07-03 08:02:10

标签: string c++11

这个程序提供了错误的输出,基本上我想要删除指定的字符,并用' g替换它... ...例如:如果用户输入o那么闪闪发光的那些都不是黄金输出应该是闪闪发光的全部是ngt ggld但程序正在从n开始删除所有字符

 #include <iostream>
 using namespace std;
 int main()
 {
   string input(" ALL GLItters are not gold");
   char a;
   cin>>a;
   for(int i=0;i<input.size();i++)
   {
     if(input.at(i)==a)
     {
        input.erase(i,i+1);
        input.insert(i,"g");
     }
   }
    cout<<"\n";
   cout<<input;

 }

2 个答案:

答案 0 :(得分:1)

string& erase (size_t pos = 0, size_t len = npos);

第二个参数(len)是要擦除的字符数。 你必须把1而不是i + 1:

input.erase(i,1);

http://www.cplusplus.com/reference/string/string/erase/

答案 1 :(得分:1)

为什么不直接更换?将for循环替换为:

for (char& c : input)
{
    if (c == a)
        c = 'g';
}

Live example here