1. IO 继承家族类
由图可以看到 C++ IO 类型设计的是一个继承家族。

2. IO 流状态
- 4 种状态标识
- goodbit 表示流没有错误
- eofbit 表示流到达文件结束
- failbit 表示 IO 操作失败
- badbit 表示流崩溃了,出现系统级错误
- 一个流的状态标识改变后,例如 cin,可以用 cin.clear(); 恢复 cin 的状态为 goodbit
int main() {
// 正常情况下,流都是处于 goodbit 状态
cout << cin.good() << endl; // 1
cout << cin.eof() << endl; // 0
cout << cin.fail() << endl << endl; // 0
cout << cin.bad() << endl; // 0
// 输入一个字符或多个字符,cin 读取失败,流状态被标记为 failbit
int i = 0;
cin >> i; // x
cout << i << endl; // 0
cout << cin.good() << endl; // 0
cout << cin.eof() << endl; // 0
cout << cin.fail() << endl << endl; // 1
cout << cin.bad() << endl; // 0
if (cin.fail()) {
// 修复标志位
cin.clear();
// 要把缓冲区中的多个字符都读出来,读到数字停下来,否则再去 cin >> i 还是会失败
char ch = cin.peek();
(!(ch >= && ch <= )) {
ch = cin.();
cout << ch;
ch = cin.();
}
cout << endl;
}
;
}


