课件7io流与文件系统_第1页
课件7io流与文件系统_第2页
课件7io流与文件系统_第3页
课件7io流与文件系统_第4页
课件7io流与文件系统_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、IO流与文件系统王瑞上海大学通信与信息工程学院I/O系统的作用2022/7/182应用程序I/O系统磁盘键盘显示器文件文件I/O系统为程序与I/O设备之间进行数据交互提供了途径。C+为何有自己的I/O系统C语言的标准输入输出函数和只能处理基本数据类型,对用户自定义类型无能为力。C+可以重载输入输出运算符,能够处理用户自定义类型。C+采用继承方式来设计流库,功能更强大,扩充性更好。2022/7/183C+流库的结构C+流库是从继承方法建立起来的一个输入/输出类库,它具有两个平行的基类,即streambuf类和ios类,所有其他的流类都是从它们直接或间接地派生出来的。streambuf类提供对缓冲

2、区的低级操作:2022/7/184streambuffilebufstrstreambufconbufios类及其派生类提供用户使用流类的接口:2022/7/185iosistreamostreamfstreambasestrstreambaseifstream istrstreamofstream ostrstream constreamfstreamstrstreamiostreamistream-withassignostream-withassigniostream-withassign有关头文件和预定义流对象包含常用流类声明的头文件:iostream.h支持标准I/0操作fstrea

3、m.h 支持文件I/0操作strstream.h 支持串I/0操作iomanip.h支持大多数流操纵符当开始执行C+程序时,有几个自动打开的预定义流:cin标准输入cout标准输出cerr不带缓冲标准出错信息输出clog带缓冲标准出错信息输出2022/7/186输入和输出istream和ostream是用户使用流库的主要界面之一。istream提供了主要的输入操作,可以通过istream完成如下操作:从输入流中获取单个字符。从输入流中获取一行数据。从输入流中获取指定字节数的数据。将文件指针移动到指定位置,等等。2022/7/187ostream提供了主要的输出操作,可以通过ostream完成如

4、下操作:刷新输出流。向输出流中写入指定字节数的数据。将文件指针移动到指定位置,等等。istream和ostream分别重载了和两个运算符,用户可以很方便地使用这两个运算符对预定义类型进行输入和输出。用户也可以重载这两个运算符,从而能够输入和输出自定义类的对象。2022/7/188格式控制C+提供了两种格式控制的方法:使用操作符使用ios类中实现格式控制的成员函数2022/7/189使用操作函数控制格式C+ I/O流库提供了一些操作符(如下表所示),可以直接嵌入到输入/输出语句中来实现特殊格式的控制。2022/7/18102022/7/1811操纵符 含义 I/Odec 以十进制为基 I/Ooc

5、t 以八进制为基 I/Ohex 以十六进制为基 I/Ows 提取输入中的空白 inputendl 插入换行并刷新流 outputends 在串后插入终止符 outputflush 刷新流 outputsetbase(int) 设置基(0,8,10,16) outputresetiosflags(long ) 清除参数指定的格式位 I/Osetiosflags(long ) 设置参数指定的格式位 I/Osetfill(int ) 设置填充字符 I/Osetprecision(int) 设置显示精度 I/Osetw(int) 设置显示域宽 I/O例子void main() int a=100; c

6、outhexaendl; coutoctaendl; coutdecaendl;/结果:641441002022/7/1812使用ios类成员函数格式化输入输出的格式由各种格式状态标志来确定。这些状态标志在状态量中各占一位,它们在ios类中定义为枚举量,如下表所示。这些成员函数的功能包括:设置格式状态标志(setf)清除格式状态标志(unsetf)获取格式状态标志(flag)设置域宽、填充字符和设置精度(width、fill、precision等)2022/7/18132022/7/1814状态标志 含义 I/Oskipws 跳过输入中的空白 inputleft 左对齐输出 outputrig

7、ht 右对齐输出 outputinternal 在引导符或基指示符后填入字符 outputdec 以十进制为基 I/Ooct 以八进制为基 I/Ohex 以十六进制为基 I/Oshowbase 在输出中显示基指示符 outputshowpoint 在输出中显示小数点 outputuppercase 十六进制输出时,字母大写 outputshowpos 正整数前显示“+” outputscientific 科学计数法显示浮点数 outputfixed 定点形式显示浮点数 outputunitbuf 在输出后立即刷新所有流 outputstdio 输出后刷新stdout和stderr output

8、例子void main()int a=20;double b=111.11; cout.setf(ios:showpos|ios:scientific);coutaendl;coutbendl;/结果:+20+1.111100e+0022022/7/1815文件I/OC+把文件看作是字符序列。根据数据的组织形式,文件可分成ASCII文件和二进制文件两种。ASCII文件又称为文本文件,它的每一个字节放一个ASCII代码,代表一个字符,这样便于对字符进行处理,也便于输出,但占用存储空间较多。二进制文件是把内存的数据,按其在内存中的存储形式原样写到磁盘上。用二进制形式输出数据,可节省外存空间和转换时

9、间,但一个字节并不对应一个字符。一般,中间结果常用二进制文件保存,以减少外存开销。2022/7/1816C+中进行文件I/O的基本过程在C+中,要进行文件的I/O,必须首先创建一个流,然后将这个流与文件相关联,即打开文件,此时才能进行读/写操作,完成后再关闭这个文件。2022/7/1817文件的打开和关闭C+有三种类型的文件流:输入文件ifstream,输出文件流ofstream,输入/输出文件流fstream。这些文件流都定义在fstream.h中。要执行文件输入/输出,须做三件事:在程序中要包含头文件fstream.h建立流。建立流的过程就是定义流类的对象。使用open()函数打开文件,也就是使某一文件与上面的某一流相联系。2022/7/1818举例#include #include void main() char buf32; ifstream in;memset(buf,0,siz

温馨提示

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

评论

0/150

提交评论