首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

[]一段流状态的查询和控制代码

2012-02-27 
[求助]一段流状态的查询和控制代码.#includeiostreamusingnamespacestdvoidmain(){intivalwhile(cin

[求助]一段流状态的查询和控制代码.
#include   <iostream>
using   namespace   std;

void   main(){
        int   ival;
        while   (cin   > >   ival,!cin.eof()){
                if   (cin.bad())
                        throw   runtime_error( "IO   stream   corrupted ");
                if   (cin.fail()){
                        cerr   < <   "bad   data,try   again ";
                        cin.clear(istream::failbit);
                        continue;
                }
          }
}

书上抄下来的,结果运行结果不是所期望的!运行下就知道了,期望输入整形值。
若遇到输入非整形值就提示出错并重新输入。
但是我输入为字符的时候就出现了无限循环!

点解,谢谢!


[解决办法]
cerr < < "bad data,try again ";
cin.clear(istream::failbit);
continue;
改成
cerr < < "bad data,try again ";
cin.clear();
cin.sync();
continue;

[解决办法]
本质原因是错误输入仍然保留在输入缓冲里,必须先清掉。

热点排行