面向对象程序设计技术C课件第7章.ppt_第1页
面向对象程序设计技术C课件第7章.ppt_第2页
面向对象程序设计技术C课件第7章.ppt_第3页
面向对象程序设计技术C课件第7章.ppt_第4页
面向对象程序设计技术C课件第7章.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

第7章 I/O流,2,面向对象技术与Visual C+-第7章,本章主要内容,流的概念 非格式化输入/输出 格式化输入/输出 文件的输入/输出,3,面向对象技术与Visual C+-第7章,流的概念,在C+中,将数据从一个对象到另一个对象的流动抽象为“流”。流动的方向不同,构成输入/输出流,即I/O流。 在C+程序中,数据可以从键盘流入到程序,也可以从程序流向屏幕或磁盘文件。 从流中获取数据的操作称为提取操作(Get from) 向流中添加数据的操作称为插入操作(Put to)。 C+中数据的输入/输出就是通过I/O流来实现的。,4,面向对象技术与Visual C+-第7章,C+编译系统提供的I/O流库含有两个平行基类:streambuf和ios,所有的流类都是由它们派生出来的。 ios类有4个直接派生类,即输入流类istream、输出流类ostream、文件流类fstreambase、串流类strstreambase,这4种流作为流库中的基本流类。,5,面向对象技术与Visual C+-第7章,I/O流库中各个类之间的层次关系,6,面向对象技术与Visual C+-第7章,非格式化输入/输出,非格式化输入/输出就是按系统预定义的格式进行的输入/输出。 按默认约定,每个C+程序都能使用标准I/O流,如标准输入、标准输出。 cin用来处理标准输入,即键盘输入; cout用来处理标准输出,即屏幕输出。它们被定义在iostream.h头文件中。 在使用cout和cin前,要用编译预处理命令将所使用的头文件包含到源程序中,其格式如下:,#include ,7,面向对象技术与Visual C+-第7章,非格式化输出,“”是预定义的插入运算符,作用在流类对象cout上,实现默认格式的屏幕输出。使用cout输出表达式值到屏幕上的格式如下: coutE1E2Em; (自左向右结合) 其中,E1、E2、Em为均为表达式。功能是计算各表达式的值,并将结果输出到屏幕当前光标位置处。 cout是ostream流类的对象,它在iostream.h头文件中作为全局对象定义:,8,面向对象技术与Visual C+-第7章,ostream cout(stdout); 其中,stdout表示标准输出设备(屏幕)。 在ostream流类中,对应每个基本数据类型定义运算符“”重载函数为友元,在ostream.h中申明。 ostream ,9,面向对象技术与Visual C+-第7章,非格式化输入,“”是预定义的提取运算符,作用在流类对象cin上,实现默认格式的键盘输入。使用cin将数据输入到变量的格式如下: cinV1V2Vn; (自左向右结合) 其中,V1、V2、Vn都是变量。功能是暂停执行程序,等待用户从键盘输入数据,各数据间用空格或Tab键分隔,输入数据类型要与接受变量类型一致,输完后,按回车键结束。 cin是istream流类的对象,它在iostream.h头文件中作为全局对象定义: istream cin(stdin);,10,面向对象技术与Visual C+-第7章,其中,stdin表示标准输入设备名(键盘)。 在istream流类,对应每个基本数据类型定义运算符“”重载函数为友元,在istream.h中申明。 istream ,11,面向对象技术与Visual C+-第7章,格式化输入/输出,C+提供了两种进行输入/输出格式化的方法: 一种是用ios类成员函数进行格式化。 另一种是用专门的操作符函数进行格式化。,12,面向对象技术与Visual C+-第7章,用ios类成员函数格式化,ios类成员函数主要是通过对状态标志、输出宽度、填充字符以及输出精度的操作来完成输入/输出格式化。 输入/输出的格式由各种状态标志来确定,这些状态标志在状态量中各占一位,它们在ios类中定义为枚举量(教材P140表7-2). 枚举量定义在ios类中,因此引用时必须包含ios:前缀。使用时应该全部用符号名,绝不要用数值。,13,面向对象技术与Visual C+-第7章,用ios成员函数对状态标志进行操作,ios类有3个成员函数可以对状态标志进行操作,并且定义了一个long型数据成员记录当前状态标志。这些状态标志可用位或运算符“|”进行组合。 设置状态标志 用 setf函数设置状态标志, 其一般格式如下: long ios:setf(long flags),14,面向对象技术与Visual C+-第7章,清除状态标志 用unsetf函数清除状态标志,其一般格式如下: long ios:unsetf(long flags) 取状态标志 用函数flaps取状态标志有两种形式,其格式分别如下: long ios: flags( ) long ios:flags(long flag) 例7-1 例7-2,15,面向对象技术与Visual C+-第7章,用ios成员函数设置输出宽度,设置输出宽度函数有两种形式,其格式分别如下: int ios:width(int len) int ios:width() 第一种形式是设置输出宽度,并返回原来的输出宽度;第二种形式是返回当前输出宽度,输出宽度为0。,16,面向对象技术与Visual C+-第7章,设置填充字符,填充字符的作用是当输出值不满输出宽度时用填充字符来填充,默认填充字符为空格。它与width()函数配合使用,否则没有意义。 设置填充字符函数有两种形式,其格式分别如下: char ios:fill(char ch) char ios:fill( ) 第一种形式是重新设置填充字符,并返回设置前的填充字符;第二种形式是返回当前的填充字符。,17,面向对象技术与Visual C+-第7章,设置输出精度,设置浮点数输出精度有两种形式,其格式分别如下: int ios:precision(int p) int ios:precision() 第一种形式是重新设置输出精度,并返回设置前的输出精度;第二种形式是返回当前的输出精度。 例7-3,18,面向对象技术与Visual C+-第7章,用操作符函数格式化,为了不直接以标志位的方式去处理流的状态, c+标准库提供了标准的操作符函数专门操控这些状态。 这组函数不属于任何类成员,定义在iomanip.h头文件中。 将它们用在提取运算符“”或插入运算符“”后面来设定输入/输出格式,即在读写对象之间插入一个修改状态的操作。 其中有些函数没有参数,所以又叫操作符。,19,面向对象技术与Visual C+-第7章,设置输入/输出宽度函数setw(int) 例7-4 设置输出填充字符函数setfill(int) 例7-4 设置输出精度函数setprecision(int) 例7_5 设置输入/输出整型数数制函数dec、hex和oct . 例7_6 例7_8 例7_9 取消输入结束符函数ws 例7_10 控制换行操作符endl ( 在iostream.h头文件中定义) 代表输出单字符“0”的操作符ends(在iostream.h中定义) 用户自定义操作符 格式: stream(或istream) 例7_11 例7_12,20,面向对象技术与Visual C+-第7章,文件的输入/输出,C+把文件看作是一个字符(字节)的序列,即由一个个字符(字节)顺序组成。 根据数据的组织形式,可分为ASCII码文件和二进制文件。 ASCII码文件又称为文本文件,它的每一个字节存放一个ASCII码,代表一个字符。 二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘文件存放。,21,面向对象技术与Visual C+-第7章,C+有三种文件流类: 输入/输出文件流类fstream 输入文件流类ifstream 输出文件流类ofstream 它们分别从I/O流中的iostream、istream、ostream流类中派生而来。 这些文件流类都定义在fstream.h头文件中,因此,要使用文件流类,必须在程序开始包含该头文件。,22,面向对象技术与Visual C+-第7章,C+中进行文件操作的一般步骤,为文件定义一个流类对象; 使用open( )函数建立(或打开)文件。如果文件不存在,则建立该文件;如果磁盘上已存在该文件,则打开该文件; 进行读写操作。在建立(或打开)的文件上执行所要求的输入/输出操作。一般来说,在内存与外设的数据传输中,由内存到外设称为输出或写,反之则称为输入或读; 使用close()函数关闭文件。当完成操作后,应把打开的文件关闭,避免误操作。,23,面向对象技术与Visual C+-第7章,在C+中,打开一个文件就是将这个文件与一个流建立关联;关闭一个文件就是取消这种关联。 open()函数的原型在fstream.h中定义。另外,在fstream、ifstream和ofst

温馨提示

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

评论

0/150

提交评论