C++第2版7-修改版.ppt

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

第七章 C++的I/O流类库 7.1 C++为何建立自己的输入输出系统 7.2 C++的流及流类库 7.3 预定义类型的输入输出 7.4 用户自定义类型的输入输出 7.5 文件的输入输出 7.1 C++为何建立自己的输入输出系统 (1) C的类型检查机制相对较弱,C++的编译系统加强了对数据类型的检查,提高了输入输出的安全性。 例如: int i; float f; ….. scanf("%f",i); printf("%d",f); C语言编译系统认为以上语句是合法的。 (2)在C++中需要定义众多的用户自定义类型(如结构体、类等),但是使用C语言中的printf和scanf是无法对这些数据进行输入输出操作的。 请看下面的例子: class my_class{ int i; float f; char *str; // .. .. }; my_class obj; //.. .. prinf("% my_class",obj); 7.2 C++的流及流类库 1. C++的流 2. 流类库 7.2.1 C++的流 在C++中, 流可以看作是一种既有数据,又有操作,与设备相联糸的对象,即流对象。 与输入设备(如键盘)相联系的流(流对象)称为输入流(流对象); 与输出设备(如屏幕)相联系的流(流对象)称为输出流(流对象); 与输入输出设备(如磁盘)相联系的流(流对象)称为输入流出流(流对象)。 C++中包含几个预定义的流(流对象) ,它们是: .标准输入流 (流对象) cin .标准输出流(流对象) cout .非缓冲型的标准出错流 (流对象) cerr .缓冲型的标准出错流 (流对象) clog (1) cin----标准输入流(流对象), 与标准输入设备相关联(在缺省情况下指键盘)。 例如: cin变量名; “”为提取运算符(输入运算符),表示从键盘读取数据放入变量中。 (2) cout---标准输出流(流对象), 与标准输出设备相关联(在默认情况下指屏幕)。 例如: cout“数据”; “”为插入运算符(输出运算符),表示将“数据”写到屏幕上。 (3) cerr---非缓冲型的标准出错流,与标准输出设备屏幕相关联。 (4) clog---缓冲型的标准出错流,与标准输出设备屏幕相关联。 cerr与clog均用来输出出错信息。 cerr和clog之间的区别是: cerr没有被缓冲,因而发送给它的任何内容都立即输出; clog被缓冲,只有当缓冲区满时才进行输出。 下面的代码能检测用户所输入的数值并显示出相应的错误信息。 cinnum; if (num==0) { cerrThe average cannot be computed.\n";} else { avgsales=sales/num; coutavgsales"\n"; } 7.2.2 流类库 对流对象进行抽象就得到流类. C++流类库(即流库)是用继承方法建立起来的一个输入输出类库. C++流类库具有两个平行的基类: (1) streambuf类 (2) ios类 所有其他的流类都是从它们直接或间接地派生出来的。 1. streambuf 类 为输入输出操作在物理设备一方的接口,负责一些低层操作。如设置缓冲区、对缓冲区指针进行操作、从缓冲区取字符、向缓冲区存储字符等。 streambuf类,主要用作流类库的其他部分使用的基类。 streambuf类可以派生出三个类: . filebuf类 . strstreambuf类 . conbuf类。 filebuf类,使用文件来保存缓冲区中的字符序列。 strstreambuf类,提供了在内存中进行输入和输出操作的缓冲区管理。 conbuf类,用于处理输出,如控制光标、设置颜色、定义活动窗口、清屏、清一行等功能。 2. ios类 ios类为输入输出操作在用户一方的接口,负责一些高层操作。 ios作为流类库中的一个抽象基类,可以派生出许多类, 其类层次图如图

文档评论(0)

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

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

1亿VIP精品文档

相关文档