类型
- 标准I/O:键盘->屏幕
- 文件I/O
- 字符串I/O:字符串数组作为存储空间
状态
- badbit 表示发生系统级的错误,如不可恢复的读写错误。通常情况下一旦 badbit 被置位,流就无法再使用了。
- failbit 表示发生可恢复的错误,如期望读取一个数值,却读出一个字符等错误。这种问题通常是可以修改的,流还可以继续使用。
- 当到达文件的结束位置时,eofbit 和 failbit 都会被置位。
- goodbit 被置位表示流未发生错误。如果badbit、 failbit 和eofbit 任何 一个被置位,则检查流状态的条件会失。
1 | bool bad() const; //若流的badbit置位,则返回true;否则返回false |
缓冲区
缓冲区就是一块内存区,它用在输入输出设备和 CPU 之间,用来缓存数据,使数据整存整取,减少IO次数,减少CPU占用,提高效率。
- 全缓冲:在这种情况下,当填满标准 I/O 缓存后才进行实际 I/O 操作。全缓冲的典型代表是对磁盘文件的读写。
- 行缓冲:在这种情况下,当在输入和输出中遇到换行符时,执行真正的 I/O 操
作。这时,我们输入的字符先存放在缓冲区,等按下回车键换行时才进行实际的 I/O 操作。典型代表是键盘输入数据。 - 不带缓冲:也就是不进行缓冲,标准出错情况 cerr/stderr 是典型代表,这使得出错信息可以直接尽快地显示出来。