C++ 在抛出实例-C++;错误?
在这个程序中,我有一个字符串,作为参数传递给函数。我希望该函数能够从只包含a-z字母的字符串中删除所有相邻字母,这些字母总是按字母顺序排列的。例如,如果我输入aaabbcd,程序应该输出ad。我想问为什么程序停止工作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
#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)
你能用你想要的输出陈述一些示例输入吗?它应该变得很明显。Nicereturn
。。。