我对编程几乎是全新的,我尝试学习C++。这是我第一次感到自己撞墙。我试图搜索,但因为人们通常使用环路解决我找不到的问题。
我试图找到一个循环解决方案, 从字符串中删除所有同义词(我想我知道如何使用循环解决它,
#include <iostream>
#include <string>
using namespace std;
int i = 0;
string s("");
string del_cons(string z){
if(i == (z.length()-1) ){
s+= z.substr(i);
return s;
}
else if(z[i] == a || z[i] == e || z[i] == i || z[i] == o || z[i] == u ){
i++;
s+= del_cons(z.substr(i));
return s;
}
else{
s+= z.substr(i,1);
i++;
s+= del_cons(z.substr(i));
return s;
}
}
int main(){
string x;
getline(cin, x);
cout << del_cons(x) << endl;
return 0;
}
代码编译, 但是当用字符串尝试它时, 我得到这个错误信息 :
terminate called after throwing an instance of std::out_of_range
what(): basic_string::substr: __pos (which is 3) > this->size() (which is 2)
(Speicherabzug geschrieben)
在玩游戏代码时,这条线似乎是问题所在:
s+= del_cons(z.substr(i));
有人能给我一个提示吗?我做错了什么?我似乎在误用 substr () 函数, 但我不知道怎么用。非常感谢。