ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 一.条件状态 ### 1.概念 可被任何流类使用的一组标志和函数,用来指出给定流是否可用。 ### 2.条件状态的种类 设 `s` 为某个I/O类型。 下面几个状态,类型为 `s::iostate`(靠位运算吃饭)。 | 状态 | 含义 | | ---- | ---- | | `s::badbit` |流是否崩溃,系统级错误,如不可恢复的读写错误。| | `s::failbit` |流操作失败,可恢复错误,如读取类型不匹配或流到达文件结尾。| | `s::eofbit` |流达到文件结尾。| | `s::goodbit` |流正常,恒为0。| 当 `s::badbit` 、`s::failbit` 、`s::eofbit` 任意一个被置位时,检测流状态的条件会失败: ```c++ int a; cin >> a;//输入 B 时,该表达式转换成 bool 后的值为 false ``` ### 3.获取和修改流状态 | 函数 | 含义 | | ---- | ---- | | `obj.eof()` |流是否达到文件结尾| | `obj.fail()` |流是否操作失败,或者流达到文件结尾。| | `obj.bad()` |流是否崩溃| | `obj.good()` |流是否正常。| | `obj.clear()` |重置流状态。| | `obj.clear(flags)` |按照 `flags` 重置流状态,其中 `flags` 为 `s::iostate` 类型。| | `obj.setstate(flags)` |按照 `flags` 设置流状态,其中 `flags` 为 `s::iostate` 类型。| | `obj.rdstate(flags)` |返回流状态,其中返回值为 `s::iostate` 类型。|