




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
解析C 面向对象程序设计 第8章输入 输出流对象 内容提要 8 1螺旋矩阵的输入 输出问题8 2流8 3无格式输入 输出8 4输入 输出的格式控制 重点 8 6自定义类型对象的输入输出8 7文件的输入 输出问题 第8章输入 输出流对象 2020 2 10 3 提出问题 编程输出M M的螺旋矩阵 要求数据间距与M相同 例如 4 4的螺旋矩阵 其间距为4 12341213145111615610987 第8章输入 输出流对象 2020 2 10 4 分析问题 C 没有定义任何用于执行输入或输出的语句 但可以使用C语言中的标准I O函数printf 和scanf 来解决此问题 第8章输入 输出流对象 2020 2 10 5 例8 2 有如下程序 example8 2 cpp includeintb 20 floata 5 6 intmain printf d n a scanf d 该程序的运行结果为 161061273623 45 4349980 第8章输入 输出流对象 2020 2 10 6 printf 与scanf 存在以下两个缺点 1 非类型安全2 不可扩充性 第8章输入 输出流对象 2020 2 10 7 C 使用类型安全 typesafe 的I O流操作 不同类型的I O流操作都是重载的 没有定义过I O功能的类型不具备I O操作的能力 C 标准库既可作为标准数据类型数据的I O 也能用于自定义类型的对象的I O 这种扩展性是C 最有价值的特点之一 C 用输入输出流来解决这个问题 下面先介绍流的概念 第8章输入 输出流对象 2020 2 10 8 流 在C 程序中 数据可以从键盘流入到程序中 也可以从程序中流向屏幕或磁盘文件 把数据的流动抽象为流 C 的输入输出操作是由流来处理的 第8章输入 输出流对象 2020 2 10 9 流的概念 所谓流 stream 是指数据从一个位置流向另一个位置 流是字节的序列 第8章输入 输出流对象 2020 2 10 10 输入 输出是一种数据传递操作 可以看作字符序列在计算机内存与外设之间的流动 C 将数据从一个对象到另一个对象的流动抽象为 流 流动的方向不同 构成输入 输出流 即I O流 第8章输入 输出流对象 2020 2 10 11 I O流 在C 程序中 数据可以从键盘流入到程序 也可以从程序流向屏幕或磁盘文件 从流中获取数据的操作称为提取操作 向流中添加数据的操作称为插入操作 数据的输入 输出就是通过I O流来实现的 第8章输入 输出流对象 2020 2 10 12 I O流类库的层次结构 C 编译系统提供的I O流类库含有两个平行基类 streambufiosios类有4个直接派生类 输入流类istream输出流类ostream文件流类fstreambase串流类strstreambase 第8章输入 输出流对象 2020 2 10 13 标准输入 输出流对象 标准I O流预定义了4个流类对象 cin cout cerr clog 操作系统给把外设用文件名的方式进行管理 因此程序设计要访问外设就跟访问文件一样方便 第8章输入 输出流对象 2020 2 10 14 I O分为无格式支持的低级I O和具有格式支持的高级I O 无格式支持的低级I O以基本字节为操作对象 有格式支持的高级I O把若干字节组合成有意义的单位 如整数 浮点数 字符 字符串及用户自定义类型等等 第8章输入 输出流对象 2020 2 10 15 无格式输入 输出 无格式输入 输出就是按系统预定义的格式进行的输入 输出 按默认约定 每个C 程序都能使用标准I O流 如标准输入 标准输出 cin用来处理标准输入 即键盘输入 cout用来处理标准输出 即屏幕输出 它们被定义在iostream h头文件中 在使用cout和cin前 要用编译预处理命令将所使用的头文件包含到源程序中 其格式如下 include 第8章输入 输出流对象 2020 2 10 16 无格式输出 是预定义的插入运算符 作用在流类对象cout上 实现默认格式的屏幕输出 使用cout输出表达式值到屏幕上的格式如下 cout E1 E2 Em 其中 E1 E2 Em为均为表达式 功能是计算各表达式的值 并将结果输出到屏幕当前光标位置处 第8章输入 输出流对象 2020 2 10 17 无格式输出 cout是ostream流类的对象 它在iostream头文件中作为全局对象定义 其格式如下 ostreamcout stdout 其中 stdout表示标准输出设备名 屏幕 在ostream流类中 对应每个基本数据类型定义运算符 重载函数为友元 它们在ostream中声明 ostream 第8章输入 输出流对象 2020 2 10 18 无格式输入 是预定义的提取运算符 作用在流类对象cin上 实现默认格式的键盘输入 使用cin将数据输入到变量的格式如下 cin V1 V2 Vn 其中 V1 V2 Vn都是变量 功能是暂停执行程序 等待用户从键盘输入数据 各数据间用空格或Tab键分隔 输入数据类型要与接受变量类型一致 输完后 按回车键结束 第8章输入 输出流对象 2020 2 10 19 无格式输入 cin是istream流类的对象 它在iostream头文件中作为全局对象定义 其格式如下 istreamcin stdin 在istream流类 对应每个基本数据类型定义运算符 重载函数为友元 它们同样也在ostream中声明 istream 第8章输入 输出流对象 2020 2 10 20 输入输出的格式控制 C 提供了两种格式化输入 输出方式 一种是用ios类成员函数进行格式化输入输出另一种是用专门的操作符函数进行格式化输入输出 第8章输入 输出流对象 2020 2 10 21 用ios类成员函数格式化 ios类成员函数主要是通过对状态标志 输出宽度 填充字符以及输出精度的操作来完成输入 输出格式化 枚举量定义在ios类中 因此引用时必须包含ios 前缀 使用时应该全部用符号名 绝不要用数值 例8 3示例设置状态标志 第8章输入 输出流对象 2020 2 10 22 用ios成员函数对状态标志进行操作 ios类有3个成员函数可以对状态标志进行操作 并且定义了一个long型数据成员记录当前状态标志 这些状态标志可用位或运算符 进行组合 用setf函数设置状态标志 其一般格式如下 longios setf longflags 第8章输入 输出流对象 2020 2 10 23 用ios成员函数对状态标志进行操作 清除状态标志用unsetf函数清除状态标志 其一般格式如下 longios unsetf longflags 第8章输入 输出流对象 2020 2 10 24 用ios成员函数对状态标志进行操作 用函数flags取状态标志有两种形式 其格式分别如下 longios flags longios flags longflag 例8 4示例对状态标志的操作 第8章输入 输出流对象 2020 2 10 25 用ios成员函数设置输出宽度 设置输出宽度函数有两种形式 其格式分别如下 intios width intlen intios width 第一种形式是设置输出宽度 并返回原来的输出宽度 第二种形式是返回当前输出宽度 输出宽度为0 第8章输入 输出流对象 2020 2 10 26 设置填充字符 填充字符的作用是当输出值不满输出宽度时用填充字符来填充 默认填充字符为空格 它与width 函数配合使用 否则没有意义 设置填充字符函数有两种形式 其格式分别如下 charios fill charch charios fill 第一种形式是重新设置填充字符 并返回设置前的填充字符 第二种形式是返回当前的填充字符 第8章输入 输出流对象 2020 2 10 27 设置输出精度 设置浮点数输出精度有两种形式 其格式分别如下 intios precision intp intios precision 第一种形式是重新设置输出精度 并返回设置前的输出精度 第二种形式是返回当前的输出精度 第8章输入 输出流对象 2020 2 10 28 例8 6示例设置输出宽度 填充字符 输出精度 第8章输入 输出流对象 2020 2 10 29 用操作符函数格式化 为了不直接以标志位的方式去处理流的状态 c 标准库提供了标准的操作符函数专门操控这些状态 这组函数不属于任何类成员 定义在iomanip h头文件中 将它们用在提取运算符 或插入运算符 后面来设定输入 输出格式 即在读写对象之间插入一个修改状态的操作 其中有些函数没有参数 所以又叫操作符 第8章输入 输出流对象 2020 2 10 30 设置输入 输出宽度函数setw int 设置输出填充字符函数setfill int 设置输出精度函数setprecision int 设置输入 输出整型数数制函数dec hex和oct取消输入结束符函数ws控制换行操作符endl代表输出单字符 0 的操作符ends 第8章输入 输出流对象 2020 2 10 31 例8 7用操作符函数示例设置输入 输出宽度 第8章输入 输出流对象 2020 2 10 32 解决问题 P374 377 第8章输入 输出流对象 2020 2 10 33 提出问题 如何对文本文件和二进制文件进行输入输出操作 第8章输入 输出流对象 2020 2 10 34 文件的输入 输出 C 把文件看作是一个字符 字节 的序列 即由一个个字符 字节 顺序组成 根据数据的组织形式 可分为ASCII码文件和二进制文件 ASCII码文件又称为文本文件 它的每一个字节存放一个ASCII码 代表一个字符 二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘文件存放 第8章输入 输出流对象 2020 2 10 35 由于ASCII码形式与字符一一对应 因此便于对字符进行输出或逐个处理 但它要占用较多的存储空间 若存于二进制文件中 可以节省存储空间 但不能直接输出字符形式 第8章输入 输出流对象 2020 2 10 36 C 有三种文件流类 输入 输出文件流类fstream输入文件流类ifstream输出文件流类ofstream它们分别从I O流中的iostream istream ostream流类中派生而来 这些文件流类都定义在fstream h头文件中 因此 要使用文件流类 必须在程序开始包含该头文件 第8章输入 输出流对象 2020 2 10 37 C 中进行文件操作的一般步骤 为文件定义一个流类对象 使用open 函数建立 或打开 文件 如果文件不存在 则建立该文件 如果磁盘上已存在该文件 则打开该文件 进行读写操作 在建立 或打开 的文件上执行所要求的输入 输出操作 一般来说 在内存与外设的数据传输中 由内存到外设称为输出或写 反之则称为输入或读 使用close 函数关闭文件 当完成操作后 应把打开的文件关闭 避免误操作 第8章输入 输出流对象 2020 2 10 38 在C 中 打开一个文件就是将这个文件与一个流建立关联 关闭一个文件就是取消这种关联 open 函数的原型在fstream h中定义 另外 在fstream ifstream和ofstream流类中均有定义 其原型为 voidopen char filename intmod intaccess 其中第一个参数是用来传递文件名 第二个参数的值决定文件的使用方式 第三个参数的值决定文件的访问方式 第8章输入 输出流对象 2020 2 10 3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第四章-酰化反应
- 无取向硅钢生产线项目建设工程方案
- 施工现场安全巡查与整改方案
- 2025年滦州事业单位真题
- 房屋景观绿化施工方案
- 学习任务群视域下小学语文单元整体教学策略
- 小学语文跨学科作业的开发路径与实践
- 数字化背景下初中美术信息化教学路径
- 基于自然生长理论的初中数学大单元课程设计
- 混凝土快速浇筑施工技术方案
- 成人反流误吸高危人群全身麻醉管理专家共识(2025版)解读 3
- 淀粉加工工培训考核试卷及答案
- 网站推广代理服务合同5篇
- 2025年燃气职业技能鉴定全真模拟模拟题【各地真题】附答案详解
- 2025-2026学年辽海版(2024)小学美术二年级上册《巧用材料》教学设计
- 2025海康威视视频安全门禁系统使用手册
- 2025中数联物流科技(上海)有限公司招聘考试参考试题及答案解析
- 具身智能+农业种植智能农业机器人应用研究报告
- 量子计算在人工智能领域的发展趋势与2025年应用案例分析报告
- 医疗风险与安全培训课件
- 外研版高中英语新教材必修一单词(默写版)
评论
0/150
提交评论