C++ 在抛出实例-C++;错误?

C++ 在抛出实例-C++;错误?,c++,string,erase,letters,C++,String,Erase,Letters,在这个程序中,我有一个字符串,作为参数传递给函数。我希望该函数能够从只包含a-z字母的字符串中删除所有相邻字母,这些字母总是按字母顺序排列的。例如,如果我输入aaabbcd,程序应该输出ad。我想问为什么程序停止工作 #include <iostream> #include <string> #include <vector> using namespace std; vector<char> rez; string reduce_string(s

在这个程序中,我有一个字符串,作为参数传递给函数。我希望该函数能够从只包含a-z字母的字符串中删除所有相邻字母,这些字母总是按字母顺序排列的。例如,如果我输入aaabbcd,程序应该输出ad。我想问为什么程序停止工作

#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<char> rez;
string reduce_string(string s)
{
    for(int i=0; i<s.length()-1; i++)
    {
        if(s[i]==s[i+1])
        {
            s[i]=s[i+1]='0';
            s.erase(i);
            s.erase(i+1);
        }

    }
    return s;
}
int main()
{

    string s;
    cin >> s;
    cout<<reduce_string(s);

    return 0;

}
#包括
#包括
#包括
使用名称空间std;
向量rez;
字符串减少\u字符串(字符串s)
{
对于(int i=0;i>s;

cout您的
return
在循环内-循环将只在第一个字符上运行,然后返回。

在第一个
擦除(i)
之后,所有字符向左移动一个,索引也会改变。您不必调用
s.erase(i+1)
而必须再次调用
s.erase(i)
要不尝试访问字符串末尾以外的内容,请执行以下操作:

s.erase(i);
s.erase(i);

或者干脆
s.erase(i,2)

你能用你想要的输出陈述一些示例输入吗?它应该变得很明显。Nice
return
。。。