我们谈谈cin.clear的作用,第一次看到这东西,很多人以为就是清空cin里面的数据流,而实际上却与此相差很远,首先我们看看以下代码:
#include <iostream> using namespace std; int main() { int a; cin>>a; cout<<cin.rdstate()<<endl; if(cin.rdstate() == ios::goodbit) { cout<<"输入数据的类型正确,无错误!"<<endl; } if(cin.rdstate() == ios_base::failbit) { cout<<"输入数据类型错误,非致命错误,可清除输入缓冲区挽回!"<<endl; } system("pause"); }#include <iostream> using namespace std; int main() { int a; while(1) { cin>>a; if(!cin) //条件可改写为cin.fail() { cout<<"输入有错!请重新输入"<<endl; cin.clear(); cin.sync(); //清空流 } else { cout<<a; break; } } system("pause"); }C++中cin.clear()的用法,布布扣,bubuko.com
原文:http://www.cnblogs.com/tonglingliangyong/p/3908463.html