文档详情

第10章流类库及输入输出.ppt

发布:2017-06-01约2.06万字共61页下载文档
文本预览下载声明
第10章 流类库与输入输出 10.1 流、文件以及C++的基本流类和文件流类系统 *10.2 插入与提取运算符的重载 10.3 对输入输出格式进行控制 10.4 使用预定义的插入与提取运算符对文件流进行读写操作 10.5 使用类成员函数对文件流进行操作 10.6 text文件与binary文件 10.7 对数据文件进行随机访问 10.1 流、文件以及C++的基本流类和文件流类系统 -- 参看书p232--234, 10.2与10.3节 C++语言中的输入输出操作(功能)是由它所预定义的诸I/O流类的一个类库所提供的。 ?? 1. 流(Stream) ? 流(stream)是一个逻辑概念,它是C++语言对所有外部设备的逻辑抽象,它代表的是某种流类类型的一个对象。C++的IO系统将每个外部设备都转换成一个称为流的逻辑设备,由流来完成对不同设备的具体操作。 ? 2. 文件(File) 文件(File)是一个物理概念,代表存储着信息集合的某个外部介质,它是C++语言对具体设备的抽象。如,磁盘文件,显示器,键盘。 所有流(类对象)的行为都是相同的,而不同的文件则可能具有不同的行为。如,磁盘文件可进行写也可进行读操作;显示器文件则只可进行写操作;而键盘文件只可进行读操作。 当程序与一个文件交换信息时,必须通过“打开文件”的操作将一个文件与一个流(类对象)联系起来。一旦建立了这种联系,以后对该流(类对象)的访问就是对该文件的访问,也就是对一个具体设备的访问。可通过“关闭文件”的操作将一个文件与流(类对象)的联系断开。 3. C++的基本流类系统 ? 在头文件 “iostream.h” 中说明(预定义)了一批基本流类: ? ios -- 基本流类的基类; istream -- 由ios派生,支持输入(提取“”)操作; ostream -- 由ios派生,支持输出(插入“”)操作; iostream -- 由istream与ostream共同派生,支持输入和输出双向操作。 C++预定义的流有: ? extern istream cin; -- 对象cin对应于键盘文件 extern ostream cout; -- 对象cout对应于显示器文件 extern ostream cerr; -- 对象cerr对应于显示器文件 extern ostream clog; -- 对象clog对应于显示器文件 ? 程序中可直接对上述4个预定义流类对象进行读写,而不必先进行“打开文件”的操作,使用完后也不需要进行“关闭文件”的操作(因为这些流类对象与文件之间的联系是预定义好的,可认为系统已为每一程序都隐含进行了对它们的打开与关闭操作)。 4. C++的文件流类系统 ? 在头文件“fstream.h”中说明(预定义)了一批文件流类,专用于磁盘文件: ? ifstream -- 由istream派生,支持从磁盘文件中输入(读入)数据; ofstream -- 由ostream派生,支持往磁盘文件中输出(写出)数据; fstream -- 由iostream派生,支持对磁盘文件进行输入和输出数据的双向操作。 ? C++中没有预定义的文件流(类对象),程序中用到的所有文件流类对象都要进行自定义。 *10.2 插入与提取运算符的重载 -- 参看书p231, 10.1节后半 对自定义类complex重载输入输出运算符“”与“”: #includefstream.h class complex { double r; double i; public: complex(double r0=0, double i0=0) { r=r0; i=i0; } complex operator +(complex c2); complex operator *(complex c2); friend istream operator (istream in, complex com); friend ostream operator (ostream out, complex com); }; 注意: 1. 通常总以友元方式来重载输入输出运算符,而且大都使用类似于上述的重载格式。 2. 其中的“operator”用
显示全部
相似文档