源状态的控制和查询
流状态的控制和查询
C++ Primer 上的一段程序:
书上说clear()的作用是将条件重置为有效状态(重置为goodbit)。什么是有效状态?clear操作后cin有什么变化?
------解决方案--------------------
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就证明流不可用。就不能输出。
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就证明流不可用。就不能输出。