面向对象程序设计语言-2.ppt_第1页
面向对象程序设计语言-2.ppt_第2页
面向对象程序设计语言-2.ppt_第3页
面向对象程序设计语言-2.ppt_第4页
面向对象程序设计语言-2.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

第十一章 IO流与文件系统,丘志杰 电子科技大学 计算机学院 软件学院,7/17/2019,电子科技大学计算机学院 软件学院,2,I/O系统的作用,I/O系统为程序与I/O设备之间进行数据交互提供了途径。,7/17/2019,电子科技大学计算机学院 软件学院,3,C+为何有自己的I/O系统,C语言的标准输入输出函数和只能处理基本数据类型,对用户自定义类型无能为力。 C+可以重载输入输出运算符,能够处理用户自定义类型。 C+采用继承方式来设计流库,功能更强大,扩充性更好。,7/17/2019,电子科技大学计算机学院 软件学院,4,C+流库的结构,C+流库是从继承方法建立起来的一个输入/输出类库,它具有两个平行的基类,即streambuf类和ios类,所有其他的流类都是从它们直接或间接地派生出来的。 streambuf类提供对缓冲区的低级操作:,7/17/2019,电子科技大学计算机学院 软件学院,5,ios类及其派生类提供用户使用流类的接口:,7/17/2019,电子科技大学计算机学院 软件学院,6,有关头文件和预定义流对象,包含常用流类声明的头文件: iostream.h支持标准I/0操作 fstream.h 支持文件I/0操作 strstream.h 支持串I/0操作 iomanip.h支持大多数流操纵符 当开始执行C+程序时,有几个自动打开的预定义流: cin标准输入 cout标准输出 cerr不带缓冲标准出错信息输出 clog带缓冲标准出错信息输出,7/17/2019,电子科技大学计算机学院 软件学院,7,输入和输出,istream和ostream是用户使用流库的主要界面之一。 istream提供了主要的输入操作,可以通过istream完成如下操作: 从输入流中获取单个字符。 从输入流中获取一行数据。 从输入流中获取指定字节数的数据。 将文件指针移动到指定位置,等等。,7/17/2019,电子科技大学计算机学院 软件学院,8,ostream提供了主要的输出操作,可以通过ostream完成如下操作: 刷新输出流。 向输出流中写入指定字节数的数据。 将文件指针移动到指定位置,等等。 istream和ostream分别重载了和两个运算符,用户可以很方便地使用这两个运算符对预定义类型进行输入和输出。用户也可以重载这两个运算符,从而能够输入和输出自定义类的对象。,7/17/2019,电子科技大学计算机学院 软件学院,9,格式控制,C+提供了两种格式控制的方法: 使用操作符 使用ios类中实现格式控制的成员函数,7/17/2019,电子科技大学计算机学院 软件学院,10,使用操作函数控制格式,C+ I/O流库提供了一些操作符(如下表所示),可以直接嵌入到输入/输出语句中来实现特殊格式的控制。,7/17/2019,电子科技大学计算机学院 软件学院,11,7/17/2019,电子科技大学计算机学院 软件学院,12,例子,void main() int a=100; couthexaendl; coutoctaendl; coutdecaendl; /结果: 64 144 100,7/17/2019,电子科技大学计算机学院 软件学院,13,使用ios类成员函数格式化,输入输出的格式由各种格式状态标志来确定。这些状态标志在状态量中各占一位,它们在ios类中定义为枚举量,如下表所示。 这些成员函数的功能包括: 设置格式状态标志(setf) 清除格式状态标志(unsetf) 获取格式状态标志(flag) 设置域宽、填充字符和设置精度(width、fill、precision等),7/17/2019,电子科技大学计算机学院 软件学院,14,7/17/2019,电子科技大学计算机学院 软件学院,15,例子,void main() int a=20; double b=111.11; cout.setf(ios:showpos|ios:scientific); coutaendl; coutbendl; /结果: +20 +1.111100e+002,7/17/2019,电子科技大学计算机学院 软件学院,16,文件I/O,C+把文件看作是字符序列。根据数据的组织形式,文件可分成ASCII文件和二进制文件两种。 ASCII文件又称为文本文件,它的每一个字节放一个ASCII代码,代表一个字符,这样便于对字符进行处理,也便于输出,但占用存储空间较多。 二进制文件是把内存的数据,按其在内存中的存储形式原样写到磁盘上。用二进制形式输出数据,可节省外存空间和转换时间,但一个字节并不对应一个字符。一般,中间结果常用二进制文件保存,以减少外存开销。,7/17/2019,电子科技大学计算机学院 软件学院,17,C+中进行文件I/O的基本过程,在C+中,要进行文件的I/O,必须首先创建一个流,然后将这个流与文件相关联,即打开文件,此时才能进行读/写操作,完成后再关闭这个文件。,7/17/2019,电子科技大学计算机学院 软件学院,18,文件的打开和关闭,C+有三种类型的文件流:输入文件ifstream,输出文件流ofstream,输入/输出文件流fstream。这些文件流都定义在fstream.h中。 要执行文件输入/输出,须做三件事: 在程序中要包含头文件fstream.h 建立流。建立流的过程就是定义流类的对象。 使用open()函数打开文件,也就是使某一文件与上面的某一流相联系。,7/17/2019,电子科技大学计算机学院 软件学院,19,举例,#include #include void main() char buf32; ifstream in; memset(buf,0,sizeof(buf); in.open(“c:test.

温馨提示

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

评论

0/150

提交评论