fstreamh与ofstream及ifstream等三个类对文件的操作方法

ofstream: 写操作(输出)的文件类(由ostream 引申而来)
ifstream: 读操作(输入)的文件类(由istream 引申而来)
fstream: 可同时读写操作的文件类(由iostream 引申而来)

对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起
来,也就是说打开一个文件。被打开的文件在程序中由一个流对象(stream
object)来表示(这些类的一个实例) ,而对这个流对象所做的任何输入输出操
作实际就是对该文件所做的操作。
要通过一个流对象打开一个文件,我们使用它的成员函数open():
void open (const char * filename, openmode mode);
这里filename 是一个字符串,代表要打开的文件名,mode 是以下标志符的一
个组合:

ios::in 为输入(读)而打开文件
ios::out 为输出(写)而打开文件
ios::ate 初始位置:文件尾
ios::app 所有输出附加在文件末尾
ios::trunc 如果文件已存在则先删除该文件
ios::binary 二进制方式

ofstream流,以ios::app打开(或者“ios::app|ios::out”),如果没有文件,那么生成空文件;如果有文件,那么在文件尾 追加。   
以ios::app|ios::in打开,不管有没有文件,都是失败。   
以ios::ate打开(或者”ios::ate|ios::out”),如果没有文件,那么生成空文件;如果有文件,那么清空该文件   
以ios::ate|ios::in打开,如果没有文件,那么打开失败;如果有文件,那么定位到文件尾,并可以写文件,但是不能读文件   

ifstream流,以ios::app打开(“ios::app|ios::out”),不管有没有文件,打开都是失败。   
以ios::ate打开(“ios::ate|ios::out”),如果没有文件,打开失败   
如果有文件,打开成功,并定位到文件尾,但是不能写文件   


fstream流,默认是ios::in,所以如果没有文件,ios::app和ios::ate都是失败,   
以ios::app|ios::out,如果没有文件则创建文件,如果有文件,则在文件尾追加   
以ios::ate|ios::out打开,如果没有文件则创建文件,如果有,则清空文件。   
以ios::ate|ios::out|ios::in打开,如果没有文件,则打开失败,有文件则定位到文件尾   

你可能感兴趣的:(fstreamh与ofstream及ifstream等三个类对文件的操作方法)