C++文件的输入输出
(1) 文件的打开与关闭
为了对一个文件进行读写操纵,应该先“打开”该文件;在使用结束后,则应“关闭”文件。C++ 中,打
开一个文件就是将这个文件与一个流建立关联;关闭一个文件,就是取消这种关联。
C++ 为文件输入输出提供了三种类型的流,即输入流、输出流及输入输出流。建立流的过程就是定义
流类的对象。
(1)文件涉及的流类
为了执行文件的输入输出的三个流类:
名 称 基 类 定义的流类对象 功 能
ofstream ostream in
用于文件的输出
ifstream istream out
用于文件的输入
fstream iostrea
m
both
用于文件的输入或输出
建立了流以后,就可以用函数 open()把某个文件与上述的某个流连在一起,即打开文件。open()函数
是上述三个流的成员函数,其原型为:
void open(const unsigned char *,int mode,int access=lebuf::openprot);
其中第一个参数是用来传递文件名的;第二个参数 mode 的值决定文件将如何被打开,第三个参数 access 值
决定文件的访问方式,即文件的类别。
文件的打开方式
打开文件的的函数 open()中的第二个参数 mode 的取值反映了文件的打开方式。
mode 值 功 能
ios::app
使输出追加到文件的尾部
ios::ate
查找文件尾
ios::in
打开一个文件进行读操作
ios::nocreate
文件不存在时,导致 open()失败
ios::noreplace
文件存在,导致 open()失败
ios::out
打开一个文件进行写操作
ios::trunc
使同名文件被删除
ios::binary
文件以二进制方式打开,缺省为文本方式
文件类别
打开文件的的函数 open()中的第三个参数 access 的取值反映了文件的类别。
access 值 文件类别
0
普通文件
1
只读文件
2
隐含文件
4
系统文件
8
备份文件
可以通过以下步骤打开文件:
① 定义一个流的对象,例如:“ofstream out;”定义了类 ofstream 的对象 out,它是一个输出流。
② 使用 open()打开文件,即使某个文件与上面定义的流相联系。例如:
out.open("test",ios::out,0);
将打开一个普通的输出文件 test。
对于类 ifstream ,mode 的缺省值为 ios::in,access 的缺省值为“ 0” (普通文件);而对于
ofstream 类,mode 的缺省值为 ios::out,access 的缺省值也是“0”。因此,上述语句通常可写成:
out.open("test");
当一个文件需要用两种或多种方式打开时,可以用“或”操作符把几种方式连接在一起。例如,为了打开