




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第九章C 的I O流类库 计算机系 面向对象程序设计及C 2 主要内容基本概念C 的流及流类库用户自定义类型的输入 输出文件的输入 输出应用举例 3 基本概念流 与数据传送有关系的事物叫做流 C 用流表示数据的传输操作 流总是与某一设备 如 键盘 屏幕 硬盘 软盘等 相联系 流类 C 为输入 输出定义了一组不同的类 包含要进行传送的数据的结构 属性 特征和行为 都将其放在流库中 叫做流类 流的对象 用流类声明该流类的一个对象 代表某个输入设备或输出设备 并与具体的某个文件相联系 叫做流的对象 输入流 有一种流表示数据从某个载体或设备传送到内存缓冲区变量中 叫做输入流 输出流 有一种流表示数据从内存送到某个载体或设备中 叫做输出流 4 7 2C 的流及流类库C 流库 streamlibrary 用派生方法建立起来的一个输入输出类库 它有两个平行的基类 streambuf类和ios类 它们在iostream h中定义 是两个非常低级的类 所有流类均以两者之一作为其基类 一 streambuf类streambuf类主要负责缓冲区的处理 缓冲区由一字符序列和两个指针 输入缓冲区指针和输出缓冲区指针 组成 这两个指针指向字符要被插入或被取出的位置 streambuf类可以派生出三个类 filebuf类 strstreambuf类和conbuf类 5 它们的类等级如下 streambuffilebufstrstreambufconbuf二 ios类ios类及其派生类提供用户使用流类的接口 提供了输入和输出所需要的公共操作 它支持对streambuf的缓冲区进行输入输出时的格式化或非格式化转换 ios类有四个直接派生类 istream 输入流 ostream 输出流 fstreambase 文件流 strstreambase 串流 6 iosistreamostreamfstreambasestrstreambase以这四种基本的流类为基础 可派生出多种实用的流类 iostream 输入 输出流 ifstream 输入文件流 ofstream 输出文件流 fstream 输入 输出文件流 在istream ostream和iostream类的基础上分别重载运算符 就得到了istream withassign ostream withassign和iostream withassign类 类等级如下 7 当开始执行C 程序时 C 会有几个自动打开的预定义流 它们是 cin 与标准输入设备相关的流 cout 与标准输出设备相关的流 cerr和clog 与标准错误输出设备相关的流 cerr和clog之间的区别是cerr没有被缓冲 clog被缓冲 只有当缓冲区满时 才进行输出 这四个预定义的流在iostream h里被说明为withassign类的对象 externistream withassigncin 等价于stdinexternostream withassigncout 等价于stdoutexternostream withassigncerr 等价于stderrexternostream withassignclog 等价于带缓冲的tderr可以用istream和ostream等类声明自己的流对象 8 7 4用户自定义类型的输入 输出一 重载输出运算符 输出运算符 也称插入运算符 有两个操作数 左操作数为ostream类类型的对象 右操作数可以是一个预定义类型的变量 也可以是重载了该运算符 的类的对象 重载运算符 的定义格式如下 ostream 一般采用友元函数形式重载 9 书中例7 7 p258 定义了二维坐标类coord 并通过友元函数重载了输出运算符 定义格式如下 istream 一般采用友元函数形式重载 见例7 8 P260 10 7 5文件的输入 输出概述文件是具有相同类型的数据的任意序列 一般是指存放在外部介质上的数据的集合 要对文件进行处理 必须首先建立一个文件 根据文件数据的组织形式 可将文件分为ASCII文件和二进制文件 ASCII文件也称文本 text 文件 他们存放在介质上的存储形式和存储过程是不一样的 对文件的操作有两种 一是向文件输出数据 另一是从文件读入数据到内存 写入到文件和从文件读出的过程可分解为三个抽象的概念 往流中加入一个字符 从流中取出一个字符 一旦建立一个流 把它与文件相关连以便用来读和写 11 7 5 1文件打开与关闭在C 中 打开一个文件 就是将这个文件与一个流建立关联 关闭一个文件 就是取消这种关联 C 有三种类型的文件流 输入文件流ifstream 输出文件流ofstream 输入 输出文件流fstream 类定义在fstream h中 1 打开文件要将文件输入 输出 首先必须打开文件 分三个步骤 1 在程序中要包含头文件fstream h 2 建立流 定义流类的对象 ifstreamin 输入流对象in 用于inputofstreamout 输出流对象out 用于outputfstreamboth 输入 输出流对象both 用于inputandoutput 12 3 使用open 函数 将建立的流与文件相关连 open 函数的原型为 voidopen constchar filename intmode intaccess 其中filename用来传递文件名的 mode值决定文件的打开方式 其所能取的值是在iostream h中ios类的公有部分定义的枚举值 enumopen mode in 0 x01out 0 x02ate 0 x04app 0 x08trunc 0 x10nocreate 0 x20noreplace 0 x40binary 0 x80 每个枚举值的含义请见书中P262下半部分 第二个参数mode值有时也用缺省值 13 第三个参数值access是文件的保护方式 与操作系统有关 一般使用缺省值 打开文件的一般格式 定义流类的对象 流类对象 open 文件名 使用方式 访问方式 或定义流类的对象 文件名 使用方式 访问方式 例如 ofstreamout out open test ios out 0 如果未成功打开文件 则流变量的值为0 因此打开文件时 通常要判断打开是否成功 2 关闭文件当结束一个文件的操作后 要及时关闭该文件 以防止它被误用 ofstreamout test 关闭文件的一般格式为 流类对象 close 14 7 5 2文件的读写1 文本文件的读写操作方法 用输入 输出运算符 例7 9 P265 例7 10 P265 15 2 二进制文件读写操作由于此时读写的数据都是无意义的二进制字符 这时不能用 运算符来读写 方法有 1 使用put 和get 函数 例7 11 P266 2 使用read 函数 例7 12 P268和write 函数 例7 13 P268上面这4个函数也可以用于文本文件的读写 16 3 检测文件结束可以使用eof 函数来检测文件是否到达文件尾的标志位EOF该函数的原型是inteof 示例 ifstreamifs if ifs eof 尚未到达文件尾 或者可以检查流对象是否为零 为零表示文件结束示例 ifstreamifs if ifs 尚未到达文件尾 17 4 随机存取文件随机存取文件可以根据需要访问文件中的任一个元素 1 文件指针函数a seekg pos 在输入流中从头开始移动pos个字节文件读指针seekp pos 在输出流中从头开始移动pos个字节文件写指针b seekg pos origin seekp pos o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蓄电池供电输送知识培训课件
- 2025年全国特种设备作业人员-叉车证理论考试题库(含答案)
- 2025年门式起重机操作证(Q2)考试题库(含答案)
- 2025年山东省日照市莒县中考二模物理试题(含答案)
- 小班认识数字题目及答案
- 消费金融算术题目及答案
- 2025玉米购销运输合同
- 线性代数题目理解及答案
- 葡萄酒保储知识培训课件
- 一堂课告别双体系小白
- 职业体验活动记录表
- DB23T 2849-2021 公共视频监控系统监控杆体施工规范
- 主题阅读1:大自然的文字
- 电梯周期日常维护保养项目表
- (中职中专)二维动画设计软件应用完整版课件汇总全书电子教案(最新)
- 国际贸易理论与实务ppt课件(完整版)
- GB∕T 6546-2021 瓦楞纸板边压强度的测定
- 历史选择性必修1 国家制度与社会治理(思考点学思之窗问题探究)参考答案
- 学前儿童发展心理学(第3版-张永红)教学课件1754
- 医学资料冠心病英文版
- 中职《机械基础》全套课件(完整版)
评论
0/150
提交评论