《C++ Primer Plus》17. 输入、输出和文件

流、缓冲区与 iostream

image-20250305133228464

  • streambuf 类为缓冲区提供了内存,并提供了用于填充缓冲区、访问缓冲区内容、刷新缓冲区和管理缓冲区内存的类方法
  • ios_base 类表示流的一般特征,如是否可以读取、是二进制流还是文本流
  • ios 类基于 ios_base,其中包括了一个指向 streambuf 对象的指针成员
  • ostreamistreamios 类派生而来,分别提供了输出方法和输入方法
  • iostream 基于 ostreamistream

C++ 11 添加了 char16_tchar32_t,开发了一套 IO 模板,包括basic_istream<charT, traits<charT>>basic_ostream<charT, traits<charT>>

其中,traits<charT> 模板是一个模板类,为字符串类型定义了具体特性,如如何比较字符是否相等以及字符的 EOF 值等

istreamostreamchar 具体化的 typedef,同理 wistreamwostreamwchar_t 具体化的 typedef,还有 wcoutwcinwcerr

cin 的流状态

image-20250305135526076

只有在流的每个状态位置都是 false 时,下面的测试才返回 true

while (cin >> input)

如果出现错误,最好直接跳过一行或者跳到空白字符

其他 istream 方法

  • get
  • getline
  • ignore
  • read
  • peek
  • gcount
  • putback