C++怎么解决类型输入不匹配问题?
例如:![](zzz/editor/img/code.gif)
#include<iostream> using namespace std; int main() { int a,b; while(1) { cin>>a>>b; cout<<a<<b<<endl; if(a==b) break; } system("pause"); return 0; }
上面这段程序,如果输入字符'a',就进入死循环了。
这样的问题不是致命的么?怎么解决啊??
#include<iostream> using namespace std; int main() { int a,b; while(1) { cin>>a>>b; cout<<a<<b<<endl; if(a==b) break; } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { int a,b; while(1) { s: cin>>a; if(cin.fail()) { cin.clear(); cin.ignore(); goto s; } cin>>b; cout<<a<<b<<endl; if(a==b) break; } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { int a,b; while(1) { cin>>a>>b; if(cin.fail()){ cerr << "input error";break;} cout<<a<<b<<endl; if(a==b) break; } system("pause"); return 0; }
#include<iostream> #include<string> using namespace std; int main() { string buf; int a,b; while(1) { while(!(cin >> a >> b)) {//还可以提示出现输入错误 cin.clear();//使流能用。 cin >> buf;//将错误的字符全部排尽。 } cout<<a<<b<<endl; if(a==b) break; } system("pause"); return 0; }
#include<iostream> #include<string> using namespace std; int main() { int a,b; while(1) { while(!(cin >> a >> b)) {//还可以提示出现输入错误 cout<<"input error"<<endl; cin.clear();//使流能用。 cin.ignore(100,'\n'); } cout<<a<<b<<endl; if(a==b) break; } system("pause"); return 0; }这样真的很体面。。。