第七章C的IO流库_首都师范大学.ppt

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

第八章 C++ 的 I/O 流库;C++ 为什麽要建立自己的输入输出系统? 1 C 虽然具有一个灵活和功能强大的输入输出系统, 但它并不支持自定义类型。例如: class account { char name[30]; double balance; public: account(); account(char*, double); … };; … account acnt; scanf(“%account”, acnt); // 错误,不支持 account 类型 account acnt1(John, 3000.0); printf(“%account”, acnt1); // 错误,不支持 account 类型 … 因为输入函数 scanf 和输出函数 printf 的格式串形参 只能与系统预定义类型匹配,而无法识别用户的自 定义类型,并且也不能通过重载定义 scanf 和 printf 函数的新版本,使它们的格式串形参能匹配任意用 户自定义类型。;2 面向对象程序设计必须定义众多的用户自定义类, 如何以面向对象的设计原则和方法为自定义类设计 既规格统一,又??应个性化的输入输出操作行为是 十分必要的。因此 C++ 必须建立一个能通过对输入 输出操作重载的方法实现对任意自定义类型对象输 入输出支持的系统。;本章要点 1 C++ 流库结构 流库的概念、流库的组成。 2 标准输入输出流 输入输出流类的定义、输入输出运算符、输入输出 的格式控制。 3 自定义类的输入输出 输入输出运算符的重载。 4 文件的输入输出流 文件的打开、关闭和读写。 5 使用 MFC 的对话框类实现输入输出;8.1 C++ 流库结构 8.1.1 流库的概念 流(stream)是从源(数据的生产者)到目标(数 据的使用者)被传输数据的引用。每个流都是一个与 某种数据传输设备相关联的对象。 流具有方向性: 输入流是与输入设备(如键盘)关联的流。 输出流是与输出设备(如显示器屏幕)关联的流。 输入输出流是与输入输出设备(如磁盘)关联的流。;C++ 中包含的预定义流: cin 输入流,与输入设备关联。 cout 输出流,与输出设备关联。 cerr 非缓冲型错误信息流,与错误输出设备关联; clog 缓冲型错误信息流,与错误输出设备关联。 在缺省情况下,指定的输入设备是控制台键盘,输 出设备是控制台显示器终端。在任何情况下,指定的 错误输出设备总是控制台显示器终端。; cin 和 cout 的使用方法我们已经很熟悉了。cerr 和 clog 均是用来输出错误信息,它们的使用方法与 cout 基本相同,只不过它们所关联的设备始终是控制台显 示器,而不随着 cout 关联设备的改变而变化。cerr 和 clog 之间的区别是: cerr 对输出的错误信息不缓冲,因而发送给它的任何内 容都立即输出。 clog 输出的错误信息被缓冲,当缓冲区满时才进行输 出,也可以通过刷新流的方式(遇到操纵符 endl 或 flush)强迫刷新缓冲区导致显示输出。; 下面给出一段使用预定义输入输出流信息的程序: cout What was the total dollar amount of last month’s sales?; cin sales; cout How many units did you sell?; cin num; if (num == 0) { cerr The average can not be computed.\n; } else { avgsales = sales / num; cout The average selling price per nuit was ; cout avgsales \n; }; C++ 流库是用面向对象的设计方法建立起来的输入 输出类库,它具有两个平行的根基类 streambuf 和 ios, 库中所有其他的类均从它们直接或间接派生。系统中 预定义流,cin、cout、cerr、clog 都是流库中相应类的 对象。;8.1.2 streambuf 类 · streambuf 类是流库的根基类,它为输入输出物理设 备提供缓冲区和流处理的一些通用方法。 · C++ 将输入输出流均视为字节流,因此缓冲区是由 一个字符串和两个指针组成的。这两个指针分别指 向数据流在输入缓冲区中的插入位置和在输出缓冲 区的提取位置。

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档