一般情况下,再打开一个指定文件时会有两种情况
(1) 文件不存在。
(2) 文件存在。
对于第一种情况,ofstream类的对象会默认自动创建一个同名文件;而第二种情况下,ofstream类的对象会默认将该文件的内容删除,问数据输出到该文件做好准备。
假如不想使用上面的默认的打开方式,我们可以用oftream或者ifstream对象的构造函数或者open()函数指定一种打开方式,首先来看一下open()函数。
open()函数的原型为 void open(const char * fname,int mode);
其中参数fname是代表文件名的字符串,第二个参数mode是文件的打开方式,每一位代表一种打开方式,在ios基类中用枚举常量表示。
ios::in 打开文件进行读操作,即读取文件中的数据
ios::out 打开文件进行写操作,即输出数据到文件中
ios::ate 打开文件时文件指针指向文件末尾,但是你可以在文件中的任何地方写数据
ios::app 打开文件不会清空数据,文件指针始终在文件末尾,因此只能在文件末尾写数据
ios:trunc 默认,若打开文件已存在,测清空文件的内容
ios::nocreate 若打开文件不存在则不建立,返回打开失败信息
ios::noreplace 打开文件时不能覆盖,若文件存在测返回打开失败信息
ios::binary 打开文件为二进制文件,否则为文本文件
注:ate 是 at end 的缩写,trunc是truncate(截断)的缩写,app是append(追加)的缩写