C++面向对象程序设计 作者 李兰_ 第8章.pptVIP

C++面向对象程序设计 作者 李兰_ 第8章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8.1.1 流的概念(Stream Concept)   C++输入/输出中的核心对象是流(stream),表示一个字节序列,流是程序设计对I/O系统中对象之间的数据传输的一种抽象,它负责在数据的生产者和消费者之间建立联系,并管理数据流动。流的基本操作包括读入(reading from)和写出(writing to),也即输入和输出,从流中获取数据的过程称为输入流,向流中添加数据的过程称为输出流,如图8-1所示。 下面给出一段使用预定义输入/输出流信息的程序: 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++针对流的特点,提供了如图8-2所示的由继承派生关系的层次结构来描述流的行为,并为这些抽象的流类定义了一系列的I/O操作函数,所包括的类主要有ios、istream、ostream、iostream、ifstream、ofstream、fstream、istrstream、ostrstream、strstream等。表8-1中给出了部分流类的简要说明。   1.简明与可读性   直观地讲,C++提供的I/O函数更为简明,增加了可读性。   2.类型安全(type safe)   所谓类型安全,是指在进行I/O操作时不应对参加输入/输出的数据在类型上发生不该有的变化。   3.易于扩充   在C++的I/O系统的流类的定义中,把C语言中的左、右移位运算符“”和“”,通过运算符重载方法,定义为插入(输出)和提取(输入)运算符。 8.1.2 流类库(Stream Class Library)   流类库是按面向对象方法组织的许多个流类的类层次集合,它主要由两个流类层次streambuf和ios组成,streambuf类及其子类主要完成信息通过缓冲区的交换;ios类及其子类是在streambuf类实现的缓冲区信息交换的基础上,增加了各种格式化的输入/输出控制方法。   1.各个流类简介   1) ?ios类   ios类是所有流类的父类,以枚举方式定义一系列与I/O有关的状态标志、工作方式等常量,包括设置域宽、数据精度等输入、输出格式的成员函数,流的缓冲区指针是其数据成员。   2) ?streambuf类   Streambuf类负责管理流缓冲区,包括设置缓冲区和在缓冲区与输入、输出流之间存取字符的操作的成员函数。   3) ?istream类和ostream类   这两个类除继承了类ios的成员外,主要为C++的系统数据类型分别对于运算符“”和“”进行重载,是输入、输出的基础类,用以完成流缓冲区中字符格式化和非格式化之间的转换处理。   4) ?iostream类   iostream类同时以istream和ostream为基类,通过共享两个父类的接口,能够在同一个流上实现输入和输出操作。   5) ?istream-withassign类   istream-withassign类是istream类的派生类,主要增加了输入流(对象)之间的赋值“=”运算。   6) ?ostream-withassign类   ostream-withassign类是ostream类的派生类,主要增加了输出流(对象)之间的赋值“=”运算。   7) ?iostream-withassign类   iostream-withassign类是iostream 的派生类。允许输入/输出对象的赋值和拷贝操作。   这八个类(包括istream和ostream类)的继承关系如图8-3所示,大多数I/O操作函数包括在ios类、istream类、ostream类和iostream类中。名字带有“withassign”的三个类,实际补充了流对象的赋值操作。streambuf类与ios类间无继承关系,是两个平行基类,当I/O操作需要使用I/O缓冲区时,可以创建缓冲区对象,通过流缓冲区指针完成有关缓冲区的 操作。   2.流类库中的两个主要层次   1) 输入/输出流类(ios)   ios类及其派生类是在streambuf类实现的通过缓冲区信息交换的基础上,进一步增加了各种格式化的输入/输出控制方法。图8-4列出了

文档评论(0)

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

1亿VIP精品文档

相关文档