标准输入cin出现异常,怎么解决?
#include <iostream>using namespace std;void main(){ int test; bool b_=1; while(b_){ cin>>test; if(cin.fail()){ cerr<<"stream failed!!"<<endl; cin.clear(istream::failbit); continue; } if(test == 2) b_=0; }}#include<iostream>using namespace std;void main(){ int test; bool b_=1; while(b_){ cin>>test; if(cin.fail()){ cerr<<"stream failed!!"<<endl; cin.clear(istream::goodbit); cin.sync(); continue; } if(test == 2) b_=0; }}
[解决办法]
cin.clear(istream::failbit);
clear不是清理的意思,是设置的意思。
[解决办法]
1楼正解
cin.clear(istream::goodbit);
[解决办法]
用cin.clear(istream::goodbit);设置后,还要用cin.sync();清空缓冲区的数据。不然输入的那个a字符就一直保留在那里。