Skip to content

Latest commit

 

History

History
30 lines (30 loc) · 2.12 KB

chapter11.md

File metadata and controls

30 lines (30 loc) · 2.12 KB

第11章 输入和输出

11.1 引言

  • I/O流库提供了文本和数值的输入输出功能,这种格式化和非格式化的输入都带有缓冲。它提供了类型安全,同时也可以扩展为像支持内置类型一样支持用户自定义类型。
  • 文件系统库提供了操作文件和目录的基本工具。

11.2 输出

  • <ostream>中,I、O流库为所有内置类型都定义了输出操作。

11.3 输入

  • <istream>中,标准库提供了istream来实现输入。与ostream类似,istream处理内置类型的字符串表示形式,并能很容易地扩展到对用户自定义类型的支持。

11.4 I/O状态

  • 一般来说,I/O状态包含了读写所需的所有信息,例如,格式化信息、错误状态(如输入是否已结束),以及使用了何种缓冲等。特别是,用户可以人为设置状态来表示发生了错误或者在错误不严重的情况下人为清除状态。

11.5 用户自定义类型的I/O

  • iostream库还允许程序员为自己的类型定义I/O操作。

11.6 输出格式化

  • iostream库和format库提供了很多操作来控制输入输出的格式。

11.7 流

  • 标准库直接支持下面这些流。
    • 标准流:附加到系统标准输入输出的流。
    • 文件流:附加到文件的流。
    • 字符串流:附加到字符串的流。
    • 内存流:附加到指定内存空间的流。
    • 同步流:在多线程使用时避免数据竞争的流。
  • 流不可以被拷贝(复制),所以只能使用引用传递。

11.8 C风格的I/O

  • C++标准库还支持C标准库的I/O,这包含printf()scanf()
  • 很多对于这个库的调用从类型安全的角度来看并不安全。
  • 典型的问题是:它很难同时保证安全性与输入便利性,而且它并不支持用户自定义类型。

11.9 文件系统

  • 文件系统的属性和操作它们的方式差异很大。为了解决这个问题,文件系统库<filesystem>为大多数文件系统的大多数工具提供了统一的接口。

11.10 建议

  • 倾向于使用<filesystem>,而不要直接使用特定平台的接口。