- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第八章文件与流类库
8.1本章简介
在C++中,将数据从一个对象到另一个对象的流动
抽象为“流”。流是数据的有序序列,流可分为输
入流和输出流,输入流指从某个数据来源输入的
数据序列,通常简称为源;输出流指将向某个数
据目的地输出的数据序列,通常简称为目的;换
言之,从流中获取数据的操作称为提取操作,向
流通中添加数据的过程称为插入操作,数据的输
入与输出就是对过I/O流来实现的。将执行I/O操作
的类体系称为流类,实现该流类的系统称为流类
库。C++提供了功能强大的流类库。C++提供了三
套实现I/O的方法:一套是与C语言兼容的I/O库函
数,在C++程序中不提倡使用这种I/O方式;第二套
是I/O流类库,在非Windows程序设计中提倡使用
这种I/O方式;第三套是为Windows程序设计提供
的类库。本章主要介绍流类库提供的格式化I/O和
文件的I/O。
8.2本章知识目标
本章主要讲述输入输出流及文件读写的相关
内容,学习完本章,读者需要掌握以下知识
点:
1、了解流的概念及流类库的相关内容。
2、熟悉输入输出的格式控制。
3、掌握文件操作,了解文件操作流程。
4、学会编写程序对二进制文件和文本文件进
行读写。
5、学会随机存取文件的方法。
8.3本章知识点精讲
8.3.1输入输出的含义
C++完全支持C的输入输出系统,但由于C的输入输出
系统不支持类和对象,所以C++又提供了自己的输入
输出系统,并通过重载运算符“”和“”来支持类
和对象的输入输出。C++的输入输出系统是以字节流
的形式实现的。
C++中的流是指数据从一个对象传递到另一个对象的
操作。从流中读取数据称为提取操作,向流内添加数
据称为插入操作。流在使用前要建立,使用后要删除。
如果数据的传递是在设备之间进行,这种流就称为
I/O流。C++专门内置了一些供用户使用的类,在这些
类中封装了可以实现输入输出操作的函数,这些类统
称为I/O流类。流具有方向性:与输入设备相联系的
流称为输入流,与输出设备相联系的流称为输出流,
与输入输出设备相联系的流称为输入输出流。
8.3.2C++的基本流类体系
在头文件iostream.h中定义了C++的基本I/O流
类体系
8.3.3标准的输入输出流
C++将一些常用的流类对象,如键盘输入、显
示器输出、程序运行出错输出、打印机输出等,
实现定义并内置在系统中,供用户直接使用。
这些系统内置的用于设备间传递数据的对象称
为标准流类对象,共有四个:
⑴cin对象与标准输入设备相关联的标准输入流。
⑵cout对象与标准输出设备相关联的标准输出流。
⑶cerr对象与标准错误输出设备相关联的非缓冲
方式的标准输出流。
⑷clog对象与标准错误输出设备相关联的缓冲方
式的标准输出流。
8.3.4文件的输入输出流程
C++中,要进行文件的输入输出,必须先创建一个流,
再把这个流与文件相关联,即打开文件,才能进行输
入输出操作,完成后要关闭文件。
1、文件输入输出流类
为了执行文件的输入输出操作,C++提供了三个输入输出
流类:
⑴ofstream:由基类osream派生而来,用于文件的输出
(写)。
⑵ifstream:由基类isream派生而来,用于文件的输入
(读)。
⑶fstream:由基类iosream派生而来,用于文件的输入
或输出。
他们同属于ios类,可访问在ios类中定义的所有操作。
2、文件的打开
打开文件,就是用函数open()把某一个流与
文件建立联系。open()函数是上述三个流类
的成员函数,定义在fstream.h头文件中,例
如:
outfile.open(“test.txt”,ios::out);
其中:第一个参数用来传递文件名;第二个参
数的值决定文件打开的方式。
3.文件的关闭
文件使用完后,必须关闭,否则会丢失数据。
关闭文件就是将文件与流的联系断开。关闭
文件用函数close()完成,它也是流类中的成
员函数,没有参数,没有发返回值。
例8-1文件打开关闭的例子。
#i
文档评论(0)