第六章 C++的流类库.ppt

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

第6章 C++的I/O流类库 ? 知识点 C++为什么要建立自己的输入输出系统 输出流 输入流 格式控制 ? 难点 格式控制 ? 要求 掌握: 输出流 输入流 了解: 格式控制 6.1 C++为什么要建立自己的输入输出系统 C语言的输入输出系统是一个使用灵活、功能强大的系统,那么,为什么C++还要建立自己的输入输出系统呢?这是因为在C++中需要定义众多的用户自定义类型,面向对象方法的数据封装性就是通过用户所定义的类类型来体现的,而继承性和多态性是通过用户定义的类对象的操作来体现的。 但C语言的输入输出系统不支持用户自定义的对象。因而C++必须建立一个可扩展的输入输出系统,可以通过它解决用户自定义类型的输入输出操作。 6.2 输入输出流 C++语言提供了输入输出流机制,流简单方便,具有完整性,有效性和灵活性等特点。 流是从源(source,或者产生者)到失(sink,或者消费者)的数据流的抽象引用。从源输入字符称为提取(extracting);把字符输出称为插入(inserting)。 流操作通过iostrean类库中提供的流类来完成,它们的定义在头文件iostrean.h中,任何使用流的程序必须包含该头文件。C++标准定义了多个与流相关的类,不同编译器实现对类的层次结构可能不尽相同。大部分类在程序中不会直接使用。 6.3 输出流 流的输出用插入运算符实现,其左操作数为输出流类Ostream的对象。Ostream已经定义了对C++内部数据类型的输出方法。 在前面章节的例子中,遇到的cout是系统预定义的标准输出流对象,它对应于C语言中的stdout。另外,C++还定义了标准出错流cerr,对应C语言中的stderr,用于在标准出错设备上输出。cerr与cout可以在标准输出设备(通常为显示器)上输出。请看下面的例子: # include iostream.h void main ( ) { int i = 5; cout “Hello!\n”; cout i; } 该程序在标准输出设备上输出字符串常量“Hello! \n?”和整型变量i,如果使用C语言的输入输出库函数,输出语句可以改为: printf(Hello!\n); printf(“%d”,i); 读者可能会注意到,在使用cout流输出整型变量i时,并没有指定输出格式,这里实际上是C++语言中的重载机制在起作用。编译器根据右操作数的数据类型来选择定义的输出方式。这也正是使用流的一个优点,假如程序中有100个地方需要输出变量i,而有一天你想将变量i改为浮点类型的数据,那么如果使用C语言的输入输出函数库,你必须找到这100个位置并改变输出的格式;而使用流操作只需改变变量定义后,重新编译就可以了。 插入运算表达式的值仍然为输出流对象,上面例子中的两行输出语句可以连写为: cout“Hello!\n” i; 插入运算符可以重载,由用户定义如何输出自定义的类对象。在重载插入运算符时应将其重载为类的友元,而不是成员。对于任何给定的用户定义类型T,定义一个operator函数用于输出T类型的对象。函数原型为: osteam operator (ostream , T ); 如果要访问类对象的私有部分,应在类的声明中将其声明为该类的友元函数。下面是对一个Point类重载插入运算符的例子。 // 类声明 #include iostream.h class Point{ int x,y; public: Point (int x,int y) {Point :: x = x; Point :: y = y;} Point operator + (Point p) {return Point (x + p. x, y + p. y);} Point operator - (Point p) {return Point (x - p. x, y - p. y);} friend ostream operator (ostream ,Point ); }; // 重载运算符 ostream operator (ostream out,Point pt) { out ( pt.x , pt.y ); return out; } 重载运算符的返回值类型为ostream ,在实现时返回输出流参数本身。重载运算符后,可以象输出C++内部类型对象那样使用 来输出Point类型的对象了。假设P是一个Point类型对象,其X和Y成负的值为10和20,则下面的语句: cout P; 将在标准输出设备输出如下的内容: (10,20) 使用该类的用户无须记忆类输出函数名,只需使用标准的流插入运算符即可以完成对象的输出。 6.4 输入流 流

文档评论(0)

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

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

1亿VIP精品文档

相关文档