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

源状态的控制和查询

2013-09-24 
流状态的控制和查询C++ Primer 上的一段程序:int ivalwhile(cinival,!cin.eof()){if(cin.bad())throw r

流状态的控制和查询
C++ Primer 上的一段程序:

int ival;

while(cin>>ival,!cin.eof())
{
if(cin.bad())
throw runtime_error("IO stream corrunpt");
if(cin.fail())
{
cerr<<"bad data,try again";
 //cin.clear(istream::failbit);
                 //这里改成这样才摆脱死循环
                        cin.clear();
                        cin.sync();
                        
                        continue;

}
}

书上说clear()的作用是将条件重置为有效状态(重置为goodbit)。什么是有效状态?clear操作后cin有什么变化? c++ 流
[解决办法]
cin是ifstream类的一个对象,相当于:
istream cin;
而istream时面有个叫iostate的int
当iostat为0时,流可用
当文件读取失败后会把iostat和failbit或badbit或eofbit做位或(
[解决办法]
)操作,导致iostate变为非0值。
当使用cin输出的时候,会判断iostate是否为0。如果不为0就证明流不可用。就不能输出。
[解决办法]
cin是ifstream类的一个对象,相当于:
istream cin;
而istream时面有个叫iostate的int
当iostat为0时,流可用
当文件读取失败后会把iostat和failbit或badbit或eofbit做位或(
[解决办法]
)操作,导致iostate变为非0值。
当使用cin输出的时候,会判断iostate是否为0。如果不为0就证明流不可用。就不能输出。

热点排行