Chapter 8: The IO Library

IO即 InputOutput, C++通过一组定义在标准库类型中的类型处理IO, IO的目标对象可以是设备(文件, 控制台窗口等)或者内存(string类型).


  • IO库类型有哪些?
    • iostream头文件下定义的IO类型
      1. istream, wistream: 从流中读取数据
      2. otream, wostream: 向流中写入数据
      3. iostream, wiostream: 读写流
    • fstream头文件下定义的IO类型
      1. ifstream, wifstream: 从文件读取数据
      2. ofstream, wofstream: 向文件写入数据
      3. fstream, wfstream: 读写文件
    • sstream头文件下定义的IO类型
      1. istringstream, wistringstream: 从string读取数据
      2. ostringstream, wostream: 向string写入数据
      3. stringstream, wstringstream: 读写string

w前缀表示支持宽字符集


  • IO类的继承机制
    简单说ifstream和istringstream都继承自istream, 也就是, 可以使用istream的地方就可以使用ifstream和istringstream替代, 但是可以用ifstream和istringstream的地方不可以用istream替代, 对输出流也有同样的继承关系.

    可以将文件和string理解为一种特殊的流.


  • 流的状态(条件状态)
    IO操作是可能出错的, 所以我们需要知道流的状态, 称为条件状态. 流的状态以及查询设置流的状态的内容不再赘述.

  • 管理输入输出缓冲区
    每一个输出流都管理一个输出缓冲区, 数据可能暂时存储在该缓冲区中, 直到缓冲区被刷新才会被真正写到要输出的设备或文件中.
    缓冲区在以下情况下会被刷新:
    • 程序正常结束, return操作中缓冲区会被刷新
    • 缓冲区满时
    • 使用endl ends flush等操纵符显式的刷新
    • 使用unitbuf设置流的内部状态为立即刷新, 则每个输出操作后缓冲区都会立即刷新
    • 一个输出流可以被关联到其他流, 当读写与输出流关联的流时都会导致输出流缓冲区的刷新

  • endl ends flush的区别
    • endl: 向缓冲区末尾添加一个换行符, 然后刷新缓冲区
    • ends: 向缓冲区末尾添加一个空字符, 然后刷新缓冲区
    • flush: 直接刷新缓冲区

  • 文件模式
    每一个流都有一个与之关联的文件模式, 以表明该流如何使用文件
    文件模式包括:
    • in: 以读的方式打开
    • out: 以写的方式打开
    • app: 每次写操作均定位到文件末尾
    • ate: 打开文件后立即定位到文件末尾
    • trunc: 截断文件
    • binary: 以二进制方式进行IO

不再赘述.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值