Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在c+中替换和删除字符串中的字符+;?_String_C++11 - Fatal编程技术网

String 在c+中替换和删除字符串中的字符+;?

String 在c+中替换和删除字符串中的字符+;?,string,c++11,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

这个程序给出了错误的输出,基本上我想删除指定的字符并用“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;

 }
#包括
使用名称空间std;
int main()
{
字符串输入(“所有闪光都不是金子”);
字符a;
cin>>a;
对于(int i=0;i
第二个参数(len)是要擦除的字符数。
您必须输入1而不是i+1:

input.erase(i,1);

为什么不直接替换它?用以下内容替换
for
循环:

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

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