第十九章C++的IO系统.pptVIP

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十九章C的IO系统

* 人民邮电出版社 * 第十九章 C++的I/O系统 19.1 C++的I/O系统概述 19.2 定义自己的插入操作符和提取操作符 19.3 格式化 I/O 19.4 文本文件的I/O 19.5 二进制文件的I/O 19.6 文件的随机访问 19.1 C++的I/O系统概述 19.1.1 流与文件 C和C++的I/O系统有一个重要的共同点,就是它们都是在流上操作。这个共同点,使得在同一个程序中,可以同时使用C和C++的I/O操作。 在C和C++的I/O系统中,流分为两类:文本流和二进制流。文本流是一个字符序列。在文本流中,可能发生字符转换。二进制流则是一组字节序列。它与设备上的输入输出一一对应,没有进行任何转换。 一个流与特定文件的联系,是通过“打开”操作建立起来的。文件一打开,程序就可以同文件交换信息了。通过“关闭”操作,可以将流与特定的文件之间的联系断开。当流的打开是用于输出时,关闭操作将使相关缓冲区的信息写到外部设备上。这个过程称为刷新流。程序正常结束时,所有打开的文件都自动关闭。 19.1.2 C++的流 C++流I/O是以类层次的方式实现的。基类是一个流,它可以表示文件或I/O设备。它定义了使用者看不见的低层操作。使用者接触的是由派生类定义的高层次的I/O函数。 C++有四个预定义流,当C++程序开始执行时,它们会自动打开。这四个预定义流是: 标准输入流 cin; 标准输出流 cout; 非缓冲型标准出错流 cerr; 缓冲型标准出错流 clog。 C++提供的流I/O的一个明显优点,就是程序员可以不考虑数据的类型。例如,输出变量a的值 couta; 和输入变量b的值 cinb; 这里变量a和变量b的数据类型可能是int, char, float等等。 19.2 定义自己的插入操作符和提取操作符 到目前为止,当需要输入或输出与类有关的数据时,是通过建立专门的成员函数实现的。这种方法不太方便。C++提供了更好的方法。这就是用重载操作符“”和“”来完成类的I/O操作。 19.2.1 创建插入符 例 19.2.1 为下面的类my_data定义插入符“”,使其能输出该类的三个数据i, f, c。 类my_data的定义如下: class my_data { public : int i; float f; char ch; set_val(int a, cloat b, char ch) { i = a; f = b; ch = c; } }; 为创建类my_data 的对象的插入符函数,其功能为输出类my_data对象的三个数据i,f,ch。可重载“”操作符如下: ostream operator(ostream stream, my_data obj) { stream obj.i ,; stream obj.f ,; stream obj.ch \n; return stream; } 这个函数的返回类型是一个对类ostream的对象的引用(ostream )。它有两个参数:第一个参数是对流的引用(ostream stream);第二个参数是出现在操作符“”的右边的对象(my_data obj)。 从上面这个具体的例子,可以写出如下的插入符函数的一般框架: ostream operator (ostream 函数的流,类名对象名) { // 函数代码 return 函数的流; } 重载插入符函数不能是类的成员函数。否则,就会假设左操作数(通过this指针隐含传送)是调用操作符函数的类的对象。但重载插入符的左边参数是流,而右边参数是类的对象。 19.2.2 重载提取符 重载提取符“”的方法是和重载插入符

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档