




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章 I/O系统和文件,流 格式化I/O 文件流,流,流的概念 预定义的C+流 重载I/O运算符,流,流是一种生成或使用信息的抽象。C+的I/O系统把流连接到物理设备上,它的一个重要特点是不论它所连接的设备是什么,都采用相同的方式进行操作。 流有两种基本形式:文本流和二进制流。 文本流用于传递字符 二进制流用于传递所有数据类型的数据。 对流可以进行的最基本的操作是:打开和关闭。打开流可以让流连接到文件,而关闭操作可以让流断开与文件的连接,预定义的C+流,cin 标准输入流 cout 标准输出流 cerr 连接到标准输出的流,用于写入调试和错误信息 采用非缓冲的方式 clog 连接到标准输出的流,用于写入调试和错误信息 以缓冲的形式工作,重载I/O运算符,由于“”的作用是向流中插入,“(istream stream, 类名 ,创建一个插入函数,定义一个是友元函数的插入函数,定义提取函数,格式化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函数原型如下: void ifstream:open(const char *filename, ios:openmode); void ofstream:open(const char *filename, ios:openmode); void fstream:open(const char *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函数专门用于检测是否已经到达文件尾 原型 bool eof(); 如果没有到达文件末尾,则返回false,否则返回true。,peek和putback函数,peek的作用是从流中获取下一个字符,但是不提取出来。如果下一个字符是文件结束标识EOF,那么会返回这个标识。 原型: int peek(); putback则可以把已经提取出的字符再放回到流中。这个函数带一个char类型的参数,用于把这个字符放到指定的流中。 原型 istream ,flush函数,C+允许调用flush函数将没有写满的缓冲区内容写到物理设备上 原型 ostream ,随机存取,为了实现随机存取,C+中为一个文件定义了两个指针 一个是获取指针,它指示下一次在文件的哪一个位置上发生输入操作; 一个是放置指针,它指示下一次在文件的哪一个位置上发生输出操作。,seekg和seekp,函数seekg和seekp可以操作两个指针来实现随机存取。 seekg函数的作用是将文件当前的获取指针从指定的某一点开始移动某个偏移量字节数; seekp函数的作用是将文件的放置指针从指定的某一个点开始移动某个偏移量字节数。 原型: istream 其中:off_type是ios用typedef定义的一种整数类型;而seekdir则是一个枚举类型,seekdir类型的取值,实现随机向文件写入,从任意位置开始显示文件内容,rdstate函数,原型: iostate rdstate(); iostate是用于定义当前状态的枚举,4个函数,bool bad(); bool eof(); bool fail(); bool good(); 如果操作正确,那么函数good的返回值是true,否则为false; 如果发生了致命的错误,那么函数bad的返回值是true,否则为false; 如果发生了非致命的错误,那么函数fail的返回值是true,否则为false; 如果到达了文件尾,那么函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年民用建筑行业当前发展趋势与投资机遇洞察报告
- 2025年粉末冶金汽车零部件行业当前发展趋势与投资机遇洞察报告
- 2025年广西壮族自治区南宁市马山县中考二模数学试题含解析
- 2025年医院辐射安全与防护培训考核试题(附答案)
- 2025年全国中学生生物学联赛试题及答案(精校版)
- 山西省晋中市2024-2025学年七年级下学期期末语文试题(解析版)
- 山东省济南市东南片区2024-2025学年八年级下学期期末语文试题(解析版)
- 摄影基础知识培训方案课件
- 设施栽培技术试题及答案
- 2025租赁居间合同模板
- 企业事故隐患内部报告奖励制度
- DBJ04-T 312-2024 湿陷性黄土场地勘察及地基处理技术标准
- 电子信息科学与技术单选题100道及答案解析
- (一模)2025年广东省高三高考模拟测试 (一) 政治试卷(含官方答案)
- 研学基地的运营模式与管理
- 2020低压交流配网不停电作业技术导则
- 政府采购招标代理服务风险控制措施
- 易制毒、易制爆化学品安全培训
- 《融水香杉育苗技术规程》
- 美的MBS精益管理体系
- 带状疱疹中医护理查房课件
评论
0/150
提交评论