- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第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”用
文档评论(0)