




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章I/O系统和文件,流格式化I/O文件流,流,流的概念预定义的C+流重载I/O运算符,流,流是一种生成或使用信息的抽象。C+的I/O系统把流连接到物理设备上,它的一个重要特点是不论它所连接的设备是什么,都采用相同的方式进行操作。流有两种基本形式:文本流和二进制流。文本流用于传递字符二进制流用于传递所有数据类型的数据。对流可以进行的最基本的操作是:打开和关闭。打开流可以让流连接到文件,而关闭操作可以让流断开与文件的连接,预定义的C+流,cin标准输入流cout标准输出流cerr连接到标准输出的流,用于写入调试和错误信息采用非缓冲的方式clog连接到标准输出的流,用于写入调试和错误信息以缓冲的形式工作,重载I/O运算符,由于“”的作用是向流中插入,“(istreamstream,类名,创建一个插入函数,定义一个是友元函数的插入函数,定义提取函数,格式化I/O,使用ios成员函数进行格式化输入输出使用操控符实现格式化输入输出,使用ios成员函数进行格式化输入输出,所有的流都有一套与它相关的格式标识,这些标识用于格式化流中的数据。类ios就定义了一个fmtflags数据成员,这个数据成员以枚举的方式定义了很多的常量来表示输出的格式。,fmtflags掩码枚举中定义的格式标识,ios中定义的常用成员函数,简单使用ios进行格式化输出,取消与测试输出格式的设置,使用width,precision和fill进行格式设置,使用操控符实现格式化输入输出,操控符就是一系列的函数,这些函数可以包含在I/O表达式中更改流的格式参数,使用操控符,用户自定义操控符,与C+预定义的操控符一样,可以定义输入用的操控符,也可以定义输出用的操控符。定义输出操控符的方法如下:ostream,建立一个输出操控符set和一个输入操控符prompt,文件流,打开和关闭文件读写文本文件读写二进制文件其他I/O函数,文件流,为了不同的目的,可以使用3种流:文件输入流、文件输出流和文件输入/输出流。它们分别由类ifstream,类ofstream和fstream定义,打开文件,在定义了流之后,就可以在流上执行open操作来实现文件的打开。每种流都有这个成员函数,惟一的区别是参数的取值不同。第一个参数是一个指向字符的指针,用于传入表示文件名的字符串;第二个参数指定文件的打开模式,不同流的open成员函数的这一项取值互不相同。open函数原型如下:voidifstream:open(constchar*filename,ios:openmode);voidofstream:open(constchar*filename,ios:openmode);voidfstream:open(constchar*filename,ios:openmode);,文件打开模式的取值,关闭文件,在打开文件并对文件进行了相关的操作之后,必须对控制流执行关闭操作,就是执行相关流的close成员函数。close成员函数没有参数,也没有返回值。,读写文本文件,使用“”运算符,读写文本文件的例子,读写二进制文件,为了能够存储文本文件不能够存储的非格式化信息,就需要使用二进制文件。创建二进制文件的方法以ios:binary模式创建文件,并采用这种方法对文件进行读取。二进制文件不可以使用“”和“”进行输入输出,为了实现输入输出可以使用下面的两种方法:一是使用成员函数put和get;二是使用成员函数read和write。,put和get,使用put和get可以实现对流中单个字符的输入和输出。get函数和put函数的函数原型是:istream其中get函数从istream中读取一个字符放置在ch中,并返回对流的引用。如果到达流的末尾,就会返回一个false;而put()函数将ch中保存的字符放到ostream流中,并返回对流的引用,编写一个程序读取任何文件的内容,使用put()函数将字符串写入文件,read和write,使用get和put只能对文件读入和输出单个字符,而使用read和write则可以读入和输出一块字符。read和write也是流类的成员函数。原型istream其中:read的作用是从相关流中读取num所指定的字节数的数据,并将它们放到buf所指定的缓冲区中;wirte的作用是从buf所指定的缓冲区中将num个字节的数据输出到相关流中;streamsize是使用typedef定义的整数类型。,使用wirte成员函数向文件中写入数据,使用read成员函数读取文件中的数据,重载的get函数,最常用的几个重载函数原型如下:istream第一种形式的get函数的作用是读取num-1个字符到buf所指定的缓冲区中。第二种形式的get函数的作用是读取num-1个字符到buf所指定的缓冲区中。第三种形式的get函数的作用是从流中读取一个字符,把它作为返回值。如果到达文件尾就返回一个文件结束标识EOF。,使用重载的get()函数,getline函数,istream第一种形式的getline函数的作用是读取num-1个字符到buf所指定的缓冲区中。第二种形式的getline函数的作用是读取num-1个字符到buf所指定的缓冲区中。,eof函数,eof函数专门用于检测是否已经到达文件尾原型booleof();如果没有到达文件末尾,则返回false,否则返回true。,peek和putback函数,peek的作用是从流中获取下一个字符,但是不提取出来。如果下一个字符是文件结束标识EOF,那么会返回这个标识。原型:intpeek();putback则可以把已经提取出的字符再放回到流中。这个函数带一个char类型的参数,用于把这个字符放到指定的流中。原型istream,flush函数,C+允许调用flush函数将没有写满的缓冲区内容写到物理设备上原型ostream,随机存取,为了实现随机存取,C+中为一个文件定义了两个指针一个是获取指针,它指示下一次在文件的哪一个位置上发生输入操作;一个是放置指针,它指示下一次在文件的哪一个位置上发生输出操作。,seekg和seekp,函数seekg和seekp可以操作两个指针来实现随机存取。seekg函数的作用是将文件当前的获取指针从指定的某一点开始移动某个偏移量字节数;seekp函数的作用是将文件的放置指针从指定的某一个点开始移动某个偏移量字节数。原型:istream其中:off_type是ios用typedef定义的一种整数类型;而seekdir则是一个枚举类型,seekdir类型的取值,实现随机向文件写入,从任意位置开始显示文件内容,rdstate函数,原型:iostaterdstate();iostate是用于定义当前状态的枚举,4个函数,boolbad();booleof();boolfail();boolgood();如果操作正确,那么函数good的返回值是true,否则为false;如果发生了致命的错误,那么函数bad的返回值是true,否则为false;如果发生了非致命的错误,那么函数fail的返回值是true,否则为false;如果到达了文件尾,那么函数e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 去年李沧区数学试卷
- 社区爱心赠书活动方案策划(3篇)
- 惠州施工方案汇报(3篇)
- 双桥区盖板施工方案(3篇)
- 降粘剂施工方案(3篇)
- 绿化春节施工方案(3篇)
- 闲置物品收集活动策划方案(3篇)
- 砂糖橘活动策划方案案例(3篇)
- 安徽省芜湖市鸠江区2023-2024学年高二上学期第一次月考化学题库及答案
- 心灵驿站面试题目及答案
- 党群服务面试题目及答案
- 2025-2026秋季学年第一学期【英语】教研组工作计划:一路求索不停歇研思共进踏新程
- 2025-2026学年人教版(2024)初中数学七年级上册教学计划及进度表
- 高速天桥拆除方案(3篇)
- 第1课 鸦片战争 课件 历史统编版2024八年级上册
- 物业管理师职业技能竞赛理论知识试题题库(1000题)
- 2025年中国冷链物流行业投资前景分析、未来发展趋势研究报告(智研咨询发布)
- 2025合作合同范本下载
- 手外伤急救诊疗流程标准化
- 2025年安徽省中考历史试卷真题(含答案)
- 破译中国古老哲学的物理内涵《炁母论》(新编全文)
评论
0/150
提交评论