输入输出流(文件操作)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9.5 文件操作与文件流
❖根据文件中数据的组织形式,文件可分为 ASCII文件和二进制文件。
❖ASCII文件也称文本文件,其每个字节存一个 ASCII代码,表示一个字符。这样的文件使用 比较方便,但占用的存储空间较大。
❖二进制文件,是把内存中的存储形式原样写 到外存储器中。使用起来可以节省外存空间 和转换时间,但是它的一个字节不对应一个 字符。
9.5 文件操作与文件流
9.5.1 文件的概念
❖所谓“文件”,一般指存储在外部介质上数 据的集合。一批数据是以文件的形式存放在 外部介质上的。操作系统是以文件为单位对 数据进行管理的,也就是说,如果想找存储 在外部介质上的数据,必须先按文件名找到 指定的文件,然后再从文件中读取数据。要 向外部介质上存储数据也必须先建立一个文 件(以文件名标识),才能向它输出数据。
C++程序设计
第9章 输入输出流
第9章输入输出流
本章学习要点
完成程序的基本功能需要有初始数据的 输入和运行结果的输出.
本章重点介绍C++输入/输出流库、预定 义类型数据的输入和输出、格式控制、 自定义类型数据的输入和输出以及文件 的输入和输出等内容。
第9章输入输出流
❖9.1 C++的输入和输出概述 ❖9.2 C++的标准输入/输出流 ❖9.3 输入运算符和输出运算符及其重载 ❖9.4 C++格式输入和输出 ❖9.5 文件操作与文件流 ❖9.6 学生信息管理系统中的文件操作
ofstream outfile;
outfile.open("file1.dat");
open()函数的函数原型为: void open(const char * filename,int
mode,int access = filebuf::openprot);
第一个参数filename指定要打开的文件名,使用文件名 时可以包括路径,如“d:\\data\\file1.dat”,如果默认路 径,则默认为当前目录下的文件。第二个实参mode表示 文件的访问方式,见课本262页表9-4,其中有一些访问 方式是相互“兼容”的,可以通过“|”(或运算符)结 合起来 。
ostrstream
istream_withassign
iostream
ostream_withassign
fstream
strstream
iostream_withassign
9.5 文件操作与文件流
9.5.2 文件流类及其流对象 如果以磁盘文件为对象进行输入输出,必须先 定义一个文件流类的对象,通过文件流对象将数 据从内存输出到磁盘文件,或者通过文件流对象 从磁盘文件将数据输入到内存。
方式名 ios::in ios::out
ios::app
ios::ate ios::trunc
ios::binary ios::nocreate ios::noreplace
用途
以输入(读)方式打开文件(适用于ifstream), 如果文件不存在,open函数将失败。 以输出(写)方式打开文件(适用于ofstream) , 如果文件已存在,文件的内容将被刷新。
要对磁盘文件进行读写操作,首先必须要先打 开文件。所谓打开文件就是将文件流对象与具体 的磁盘文件建立联系,并指定相应的使用方式。 以上工作可以通过两种不同的方法实现:
(1)先说明一个fstream类的对象,再调用该 对象的成员函数open()打开指定的文件。例如, 以输出方式打开一个文件的方法如下:
以追加方式打开文件,如果文件已存在,保留原 内容,新增加的内容添加在文件尾。如果文件不 存在,将创建一个新文件。
文件打开时,文件指针定位于文件尾
如果文件存在,文件的内容将被刷新;如果文件 不存在,创建新文件。
以二进制方式打开文件,缺省时为文本文件。
打开已有文件,若文件不存在,则打开失败。
如果文件不存在,则建立新文件;若文件已经存 在,则打开失败。
9.5 文件操作与文件流
❖为了实现文件的输入和输出,首先要创建一个 文件流,当把这个流和实际的文件相关联时, 就称为打开文件。完成输入和输出后要关闭这 个文件,即取消文件和流的关联。
9.5 文件操作与文件流
9.5.2 文件流类及其流对象 在C++的I/O流类库中定义了几种文件流类,专 门用于对磁盘文件的输入输出操作。它们是: ifstream类(支持从磁盘文件的输入) ofstream类(支持向磁盘文件的输出) fstream类(支持对磁盘文件的输入输出)
注意:如果要在程序中建立文件流对象,必须 包含头文件fstream.h。
9.5 文件操作与wk.baidu.com件流
9.5.3 文件的打开与关闭 磁盘文件的打开和关闭使用文件流类中定义的 成员函数open()和close() 【每个文件流类都提供 有open()和close() 】。
9.5 文件操作与文件流
1.文件的打开
C++ I/O流类的继承结构
❖C++建立了一个十分庞大的流类库来实现数 据的输入/输出操作,其中的每个流类实现不 同的功能,这些类通过继承组合在一起。
istream
C++ I/O流ios 类的继承结构
fstreambase
strstreambase
ostream
ifstream
istrstream ofstream
//以读/写方式打开文件,适用于fstream流对象
ios::in|ios::out ios::in|ios::binary //以二进制读方式打开文件 ios::out|ios::binary //以二进制写方式打开文件
//以二进制读/写方式打开文件,适用于fstream流对象
ios::in|ios::out|ios::binary 如:file.open("file1.dat", ios::in|ios::out);
ofstream outfile; //建立一个输出文件流对象outfile ifstream infile; //建立一个输入文件流对象infile fstream file; //建立一个输入输出文件流对象file
9.5 文件操作与文件流
9.5.2 文件流类及其流对象 由于cin和cout已在iostream.h中事先定义, 所以用户不需自己定义就可以使用。但在通过文 件流对象对磁盘文件进行操作时,文件流对象没 有事先统一定义,必须由用户自己定义。