第14讲 文件的应用

上传人:qiuji****ngye 文档编号:46053934 上传时间:2018-06-21 格式:PPT 页数:56 大小:209KB
返回 下载 相关 举报
第14讲 文件的应用_第1页
第1页 / 共56页
第14讲 文件的应用_第2页
第2页 / 共56页
第14讲 文件的应用_第3页
第3页 / 共56页
第14讲 文件的应用_第4页
第4页 / 共56页
第14讲 文件的应用_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《第14讲 文件的应用》由会员分享,可在线阅读,更多相关《第14讲 文件的应用(56页珍藏版)》请在金锄头文库上搜索。

1、第十一章 文件的应用1教学目标n理解数据文件的基本概念;n掌握建立文件、打开和关闭文件、读写顺序 文件数据的基本操作; n了解文件指针的定位操作。11.1 C+的输入输出一、输入输出的含义C+语言的输入与输出包括以下3方 面的内容: 对系统指定的标准设备的输入和输出 。即从键盘输入数据,输出到显示器屏 幕。这种输入输出称为标准的输入输出 ,简称为标准I/O。 以外存磁盘文件为对象进行输入输出。 即从磁盘文件输入数据,数据输出到磁盘 文件。这种以外存文件为对象的输入输出 称为文件的输入输出,简称文件I/O。 对内存中指定的空间进行输入输出。通 常指定一个字符数组作为存储空间。这种 输入输出称为字

2、符串输入输出,简称串I/O 。C+采取不同的方法来实现以上3种 输入输出。二、C+的输入输出流C+语言没有I/O(输入/输出)语句。它带 有一个面向对象的I/O软件包,它就是I/O流库 iostream,它被认为是C+语言的一个扩充 。通过调用该库中不同的类可以实现不同的 输出功能。为了使用iostream流库,必须在程序中 包含iostream.h头文件。概念:C+的输入输出流n输入和输出是数据传送的过程,数据 如流水一样从一处流向另一处。C+ 形象地将此过程称为流。nC+的输入输出流是指由若干字节组 成的字节序列,这些字节中的数据按 顺序从一个对象传送到另一对象。流 表示了信息从源到目的端

3、的流动。n在输入操作时n在输出操作时输入设备 (如键盘、磁盘)内存输出设备 (如屏幕、打印机、磁盘等)内存字节流字节流n流中的信息内容可以是ASCII字符、二进 制形式的数据、图形图像、数字音频视频 或其他形式的信息。C+编译系统提供了用于输入输出 的iostream类库。在iostream类库中包 含许多用于输入输出的类。类名作用在哪个头 文件中声明ios抽象流基类iostreamistream通用输入流类和其他输入流的基类 iostreamostream通用输出流类和其他输出流的基类 iostreamiostream通用I/O流类和其他I/O流的基类iostreamifstream输入文件

4、流类fstreamofstream输出文件流类fstreamfstreamI/O文件流类fstreamistrstream输入字符串流类strstreamostrstream输出字符串流类strstreamstrstreamI/O字符串流类strestram表1 I/O类库中的常用流类缓冲n缓冲区:系统在主存中开辟的、用来临时 存放输入/输出数据的区域。如先将输入的 数据送到缓冲区,再从缓冲区中取出。n缓冲区的作用:因输入/输出设备的速度比 CPU慢得多,若CPU直接与外设交换数据, 必然占用大量CPU时间,降低CPU的使用效 率。使用缓冲后,CPU只要从缓冲区中取数 据或者把数据写入缓冲区,

5、而不必等待外 设的具体输入/输出操作,显著提高了CPU 的使用效率。缓冲流和非缓冲流n按在缓冲区中是否立即处理,流分为缓冲 流和非缓冲流。常用缓冲流,仅在特殊场合 ,才用非缓冲流。q非缓冲流:一旦数据送入缓冲区,立即处理 。q缓冲流:仅当缓冲区满或当前送入的数据为 新的一行字符时,系统才对流中的数据进行处 理(称为刷新)。文件的概念文件是指存储在外部介质上且逻辑上有 一定联系的一组数据的集合。n每个文件均有相应的文件名作为标志,文 件的大小几乎是没有限制的。它在外存储介 质上的具体存放位置、格式以及读写等工作 均由操作系统来管理。n外存文件包括磁盘文件、光盘文件和U盘文 件等。文件的分类1、从

6、用户角度:程序文件和数据文件n程序文件:如C+的源程序文件(.cpp)、目 标文件(.obj)和可执行文件(.exe)等都是程序 文件。n数据文件:指程序运行时需要的输入(或输 出)数据组成的文件。本章介绍的文件操作 是指对数据文件的操作。2、根据文件中数据的组织形式,文件可分 为两类:文本文件和二进制文件n文本文件(也称为ASCII码文件),每个字节 存放一个字符的ASCII码,也就是说,在文 本文件中存取的最小信息单位为字符,因 此也称为字符文件。n二进制文件(又称为内部格式文件或字节文 件),是把内存中的数据按其在内存中的存 储形式原样输出到磁盘上存放,也就是说 ,在二进制文件中存取的最

7、小信息单位为 字节。文本文件和二进制文件举例对于字符信息,在内存中是以ASCII码形式存放 ,因此无论用文本文件输出还是用二进制文件 输出,其数据格式是一样的。但是对于数值数 据,二者是不同的。例如对于整数1234,在两 种文件中的存放格式如下:0000010011010010内存中存储形式ASCII码文件存储形式 00110001001100100011001100110100二进制文件存储形式 0000010011010010文件的基本操作文件的基本操作顺序: 打开、读取、写入、关闭 在程序设计中只要涉及对文件的操作 ,就一定要使用 #include 命令二、文件的操作1、文件流类与文件流

8、对象C+中使用流对象(简称流)执行标准的输入 和输出操作。标准输入流对象cin指的是键盘,标准 输出流对象cout指的是计算机屏幕。对使用标准输 入和输出流对象的程序,必须包含iostream.h头文 件。头文件包含istream和ostream类的定义,其中 分别创建了cin和cout对象。程序员在程序中不必再创建这两个对象,直接使用即可。 除了可以从键盘获取信息以及将输出发 送给计算机屏幕外,程序也能从磁盘上的文 件接收信息或发出信息给磁盘上的文件。 从文件获取信息的操作称为“读取文件或 读操作”,相应的数据文件称为“输入文件”; 向文件发出信息的操作称为“写入文件或 写操作”,相应的数据

9、文件称为“输出文件”。 可以使用流对象来完成文件输入和输出 操作。和C+创建的标准cin和cout对象不同 ,程序员必须创建程序使用的输入和输出对 象。要创建文件对象,必须在程序中包含 fstream头文件。 二、文件的操作1、打开文件打开文件是指在文件读写之前做好必要的 准备工作,包括:1、为文件流对象和指定的磁盘文件建立关联, 以便使文件流流向指定的磁盘文件;2、指定文件的工作方式,如该文件时作为输入 文件还是输出文件,是ASCII文件还是二进制 文件等。打开文件方法一在定义文件流对象时指定参数 格式如下: ifstream 对象名 (“”,);该语句创建用于输入的文件对象(从硬盘到 内存

10、)。 ofstream 对象名(“”,) ; 该语句创建用于输出的文件对象(从内存 到硬盘)。 fstream 对象名(“”,) ;该语句创建既可用于输入又可用于输出的 文件对象打开文件方法二使用输入和输出文件对象并结合C+的 open()函数,打开计算机硬盘上的实际文件 。格式如下: 文件流.对象名; 对象名.open (“”,); mode参数在open()函数为可选项,表明文 件的打开方式,表2列出了最常用的方式。 表2 常用的文件打开方式 方 式作 用ios:in以输入方式打开文件(这是打开输入文件 的默认方式) 。ios:out以输出方式打开文件(这是默认方式),如 果已有此文件,则

11、将其原有内容全部清除 。如果文件不存在,则创 建新文件(注意 :指定的目录必须存在,否则建立文件失 败)ios:app以输出方式打开文件,写入数据添加在文 件末尾。ios:binary以二进制方式打开一个文件。ios:in|ios:out以输入和输出方式打开文件,文件可读可写 。3、确定文件是否打开成功可以使用C+的is_open()函数确定文 件是否成功打开。该函数调用的语法格式如 下:object.is_open()这里object是程序中文件对象名。如果 成功打开了文件,is_open()函数返回布尔 值true;否则,函数返回布尔值false。4、关闭文件使用C+的close()函数可

12、关闭打开的 文件。其调用的语法格式如下:obect.close(); 及时关闭文件的好处:q及时释放所占资源;q使一个文件流对象可分时与多个文件关联 ;q使有限的可同时打开的文件总数得到充分 利用。源程序清单如下: #include #include using namespace std; void main() ifstream ifile1(“e:testfile1.txt“); if(!ifile1) coutvariable;姓名 年龄 性别 章易 22 男 陆耳 24 女 程善 25 男 李想 23 女例2 编写程序,创建一个文本文件 (file.txt),并将如下信息写入该文件。

13、源程序清单如下: #include #include using namespace std; void main() ofstream outFile; outFile.open(“E:file.txt“); if(!outFile.is_open() cout #include #include void main( ) float sum=0,temp;int cout=0;ifstream infile(“data.txt”);if(!infile)couttemp) sum+=temp;count+;cout #include #include using namespace std

14、;例4 编写程序,由键盘输入一个包含有大小写 字母的字符串,例如“This is a test.”,并将其小 写字母转换成大写后将其结果存入名为abc.txt的 文本文件后,关闭文件;然后重新打开该文件, 读取文件内容,并将其中的英文字母进行减1运 算后输出到屏幕上。void main() char ch;int y=0; fstream file1; /以输出方式打开文件 file1.open(“e:abc.txt“,ios:out); if(!file1) cout=a void main() int date3=2007,12,21,dat3; double pi=3.141596,p;

15、 ofstream ofile(“e:date.txt“,ios:binary); ofile.write(char *)date,sizeof(date); ofile.write(char *)例5 以二进制方式读写文件ofile.close(); ifstream infile(“e:date.txt“,ios:binary); infile.read(char *)dat,sizeof(dat); infile.read(char *) cout #include using namespace std; void main() struct double salary;char na

16、me23; employee2;例6 文件读二进制记录ifstream is(“e:payroll.txt“,ios:binary );if (is)for(int i=0;i #include #include using namespace std;void main( ) ofstream outfile(“e:data.txt“,ios:binary);if(!outfile)cout #include #include #include using namespace std;class student private: int x; / 学号 string a; / 姓名 double y; / 成绩 public: student(int i=0,co

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号