C++啃书(八)IO库

一些基本的IO库设施:
在这里插入图片描述

1.IO类

头文件:
 iostream定义了用于读写的基本类型
 fstream定义了读写命名文件的类型
 sstream定义了读写内存string对象的类型
在这里插入图片描述
 其中以w开头的类型为支持宽字符wchar_t类型的版本。

  • IO类型间的关系
    概念上,设备类型和字符大小都不会影响我们要执行的IO操作。标准库使我们能忽略不同类型的流之间的差异,这是通过继承机制是实现的。继承机制使我们可以声明一个特定的类继承自另一个类。我们通常可以将一个派生类(继承类)对象当作其基类(所继承的类)对象来使用。如,类型ifstream和istringstream都继承自istream。
    标准库流特性可以无差别地应用于普通流、文件流和string流,以及char或宽字符流版本。

(1)IO对象无拷贝或赋值
 我们不能拷贝或对IO对象赋值,也不能将形参或返回类型设置为流类型。进行IO操作的函数通常以引用方式传递和返回流。读写一个IO对象会改变其状态,因此传递和返回的引用不能是const的。
在这里插入图片描述

(2)条件状态
在这里插入图片描述
在这里插入图片描述

  • 查询流的状态
    在这里插入图片描述
  • 管理条件状态
    在这里插入图片描述

(3)管理输出缓存
 每个输出流都管理一个缓冲区,用来保存程序读写的数据。有了缓冲机制,允许操作系统将多个输出操作组合为单一的设备写操作可以带来很大的性能提升。
在这里插入图片描述

  • 刷新输出缓冲区
    在这里插入图片描述

  • unitbuf操纵符
    在这里插入图片描述

  • 关联输入和输出流
    在这里插入图片描述
     我们既可以将一个istream对象关联到另一个ostream,也可以将一个ostream关联到另一个ostream。

2.文件输入输出

 头文件fstream:
  ifstream:读
  ofstream:写
  fstream:读写
 除了继承自iostream类型的行为之外,fstream中定义了一些新的成员来管理与流关联的文件:
在这里插入图片描述

(1)使用文件流对象
 当我们想要读写一个文件时,可以定义一个文件流对象,并将对象与文件关联起来。每个文件流类都定义了一个名为open的成员函数,它完成一些系统相关的操作,来定位给定的文件,并视情况打开为读或写模式。
在这里插入图片描述

  • 用fstream代替iostream&
    在要求使用基类型对象的地方,我们可以用继承类型的对象来替代。 所以,接受一个iostream类型引用(或指针)参数的函数,可以用一个对应的istream(或sstream)类型来调用。

  • 成员函数open和close
    在这里插入图片描述

  • 自动构造和析构
    在这里插入图片描述

(2)文件模式
在这里插入图片描述

  • 以out模式打开文件会丢弃已有数据
    在这里插入图片描述

  • 每次调用open时都会确定文件模式
    在这里插入图片描述

3.string流

 头文件:
  istringstream:读
  ostringstream:写
  stringstream:读写
在这里插入图片描述

(1)使用istringstream
 一些整行文本
 一些行内
(2)使用ostringstream
 逐步构造输出,最后一起打印

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值