读书人

标准输入cin出现错误如何解决

发布时间: 2012-06-15 19:37:05 作者: rapoo

标准输入cin出现异常,怎么解决?

C/C++ code
#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;    }}

当我输入a时,
执行结果:
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
stream failed!!
我的疑惑是:
【1】为什么它会无限循环??
【2】为什么经过cin时不等待输入就自动循环?
如果我想达到这个效果:
输入非数字时,提示错误,执行continue,再次等待输入。。
该怎么办

[解决办法]
仅供参考
C/C++ code
#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字符就一直保留在那里。

读书人网 >C++

热点推荐