第9章 IO流及类库_第1页
第9章 IO流及类库_第2页
第9章 IO流及类库_第3页
第9章 IO流及类库_第4页
第9章 IO流及类库_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章I/O流及类库,I/O流及类库,本节主要内容,C+为何建立起自己的输入输出系统C+的流及类库输出流cout的使用输入流cin的使用输入输出语句重载操作符“”文件I/O,9.1C+为何建立起自己的输入输出系统,C+除了完全支持C语言的输入输出系统外,还定义了一套面向对象的输入输出系统。我们知道,C语言的输入输出系统是一个使用灵活、功能强大的系统。那么,为什么C+还要建立自己的输入输出系统呢?这是因为在C+中需要定义众多的用户自定义类型,面向对象方法的数据封装性就是通过用户所定义的类类型来体现的,而继承性和多态性也是通过对用户定义的类对象的操作来体现的。但C语言的输入输出系统不支持用户自定义的对象。为了说明这一点,请看下面的结构:Structmystructintx;floaty;char*p;a;,C+为何建立起自己的输入输出系统,对此结构类型,在C语言中下面的语句是不能接受的:Printf(“%mystruct”,a);因为printf()函数只能识别系统预定义的类型,而没有办法对新的数据类型进行扩充。使用C+的输入输出系统,就可以通过重载“”运算符来解决以上问题。C+的类机制允许它建立一个可扩展的输入输出系统,它可以通过修改和扩展来加入用户自定义类型及相应操作。C+的输入输出系统非常庞大,本章只能介绍其中一些最重要的和最常用的功能。,9.2C+的流及类库,C+的流在C+语言中,数据的输入和输出(简写为I/O)包括对标准输入设备键盘和标准输出设备显示器、对在外存磁盘上的文件和对内存中指定的字符串存储空间(当然可用该空间存储任何信息)进行输入输出这三个方面。对标准输入设备和标准输出设备的输入输出简称为标准I/O,对在外存磁盘上文件的输入输出简称为文件I/O,对内存中指定的字符串存储空间的输入输出简称为串I/O。C+语言系统为实现数据的输入和输出定义了一个庞大的类库,它包括的类主要有ios,istream,ostream,iostream,ifstream,ofstream,fstream,istrstream,ostrstream,strstream等,其中ios为根基类,其余都是它的直接或间接派生类。流类库流(stream)是从源(数据的生产者)到目标(数据的使用者)别传输数据的引用。每个流都是一个与某种数据传输设备相关联的对象。,9.3输出流cout的使用,输出流的使用输出流cout与运算符“”一起使用,其格式如下:cout表达式1表达式2表达式n;cout您好,欢迎您!;/输出“您好,欢迎您!”到屏幕上cout100;/输出数字100到屏幕上couta;/输出变量a的值到屏幕上网络的运算符“”又叫插入运算符,因为它将后面所跟的数据插入到它前面的数据流中。在以上的例子中,字符串常量“您好,欢迎您!”、100、变量a先后被插入输出流cout中。换行符的使用除非我们明确指定,cout并不会自动在其输出内容的末尾加换行符,因此下面的语句:coutThisisasentence.;cout变量2变量n;参见例ch9_4.cpp。,9.5输入输出语句,标准I/O流(StandardI/OStream)程序运行的最初时刻需要初始数据的引入,数据处理结束时需要显示运行结果,这些都要用到输入/输出语句。输入语句负责从输入设备中获得数据,输出语句负责将数据送到输出设备。计算机直接从人那儿交互地(变看屏幕边按键)获得数据的输入设备是键盘(标准输入,可以输入文本字符),直接让人看到结果信息的输出设备是显示器(若是标准输出,输出的也是文字字符)。所以,尽管编程语言本身不跟这些具体的各不相同的设备打交道,但其开发工具(将程序转换为机器代码)却必须首先能够使用这些设备。控制这些设备的软件是操作系统,所以,C+的工具必须具有针对一定操作系统的操作集合提供给编程人员。这个操作集合就是标准输入/输出流。流是同C+语言工具捆绑的资源库。在计算机硬件中,输入/输出设备的底层操作时很复杂的,但变成人员通过简单地想想水流的流入流出,就可以把我流操作,这便是高级程序设计中显著的抽象特征。C+的标准输入/输出库就是我们已经在用的包含头文件iostream。它不仅提供了I/O库,还提供了使用库的流模式,从cin流入和cout流出到输出设备的操作符。正是流入与流出的形象描述。,输入输出语句,流状态(StreamStates)流iosteam主管数据类型的识别工作和沟通操作系统,全权负责把流中的数据送到对应的设备商。流的格式操作,如对齐、宽度定制、精度规定、数制等显示形式亦可直接以输出流状态的方式操作之。1.常用的流状态2.取消流状态的操作为:Noshowpos,noshowbase,nouppercase,noshowpoint,noboolalpha3有参数的三个常用的流状态width(int)/设置显示宽度fill(char)/设置填充字符,输入输出语句,precision(int)/设置有效位数这些流状态是以cout捆绑调用他们的形式设置的,不能与流出符连用。特别注意:width(n)为一次性操作,既第二次显示时将不再有效。defaultwidth(0)表示仅显示数值。4与连用的设置方式还有另一种与流输出符”,输入输出操作符支持I/O操作的类所提供的I/O操作接口,一般应该与标准库iostream为内置类型定义的接口相同。因此,许多类都需要重载输入和输出操作符。输出操作符的重载与输出操作符类似:输入操作符的第一个形参是一个引用,指向它要读的流,并且返回的也是对同一个流的引用。它的第二个形参是对要读入的对象的非const引用,该形参必须为非const,因为输入操作符的目的是将数据读到这个对象中。ostreamCoutsetw(6)xendl;Coutxendl;以上程序运行结果是:,习题,(2)#includeVoidmain()intx=100;Cout.setf(ios:hex);Co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论