《C++ Primer》读书笔记 第八章 IO库

第八章 IO库

8.1 IO 类

ifstring 和 istringstream 都集成自 istream。

8.1.1 IO 对象无拷贝或赋值

不能拷贝或赋值。
流类型不能作为函数返回类型。
传递和返回的引用不能是 const 的。

8.1.2 条件状态

8.2 文件输入输出

  • ifstream:从文件读数据,继承自istream
  • ofstream:从文件写数据,继承自ostream
  • fstream:从文件读写数据。

8.2.1 使用文件流对象

open() 失败会将 failbit 置位。

1
2
3
4
ofstream out;
out.open("xxx");
if (out)
...

记得关闭后再打开其他文件,离开作用域析构时会自动调用close()

8.2.2 文件模式

  • 只可以对 ofstream 或 fstream 对象设定 out 模式。
  • 只可以对 ifstream 或 fstream 对象设定 in 模式。
  • 只有当 out 也被设定时才可设定 trunc 模式。
  • 只要 trunc 没被设定,就可以设定 app 模式。app 模式总是以输出方式被打开。
  • 默认情况下,out 模式会有 trunc 效果,所以追加请同时指定 app,或者 in。
  • ate 和 binary 可任意组合。

8.3 string 流

  • istringstream
  • ostringstream
  • stringstream