流类与流对象
I/O流类库提供对象之间的数据交互服务
流类库预定义了一批流对象,连接常用的外部设备
可以定义所需的I/O流对象,使用流库提供的工作方式实现数据传输
程序中,对数据的输入/输出是以字节流实现的,应用程序中对字节序列做出的各种数据解释,I/O系统的任务就是在内存和外部设备之间稳定可靠的传输数据和解释数据,流类对象可以建立和删除,可以从流中获取数据和向流添加数据。
流的概念
输入输出是一种基本的数据传递的操作,它可以理解为字符序列在计算机内存与外设之间的流动。数据从一个对象到另一个对象的流动抽象为流,实现设备之间交换信息的类称为流类。按面向对象方法组织的多个流类及其层次集合构成了I/O流类库,称为流库。流库中的每一个流类都定义了一种设备之间的信息交换方式,按信息流动方向的不同,可以分为输入输出流。
流的种类
文本流:是一串ASCII字符,源程序文件和文本文件在传送时均采用文本流。通常,文本流在不同的设备之间传递时,可能要作一些变换。
二进制流:是由一串二进制数组成,二进制流是将数据以二进制形式存放的,这种流与设备上的输入输出一一对应,在数据传送时不需做任何交换。
缓冲流与非缓冲流
系统在主存中开辟的用于临时存放输入输出流的信息的内存区称缓冲区,输入输出流也分为缓冲流和非缓冲流。
对于非缓冲流,一旦数据被送入流中,立即进行处理。
对于缓冲流,只有当缓冲区满时,或当前送入的数据为新的一行字符时,系统才对流中的数据进行处理。引入缓冲流的主要目的是为了提高系统的效率。
流类库
C++流类库具有两个平行的基类,即streambuf类和ios类,所有其他的流类都是从它们直接或间接的派生出来。其中,ios类为输入输出操作在用户一方的接口,负责高层操作。streambuf类为输入输出操作在物理设备一方的接口,负责低层操作。
1、streambuf
对缓冲区的低级操作:streambuf(filebuf文件缓冲区管理、streambuf字符缓冲区管理、stdiobuf标准I/O缓冲区管理)
2、ios
头文件
**iostream:**包含操作所有输入输出流所需的基本信息,含有cin、cout、cerr、clog对象,提供无格式和格式化的I/O。
iomanip:包含格式化I/O操纵算子,用于是定数据输入出书格式。
fstream:处理文件信息,包含建立文件,读写文件的各种操作接口。
每种C++版本还包含其他一些与I/O相关的库,提供特定系统的某些操作。