ofstream的使用方法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;
ofstream 该数据类型表示输出文件流,用于创建文件并向文件写入信息
ifstream 该数据类型表示输入文件流,用于从文件读取信息。
fstream 该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。
打开文件
在从文件读取信息或者向文件写入信息之前,必须先打开文件
ofstream 和 fstream 对象都可以用来打开文件进行写操作,如果只需要打开文件进行读操作,则使用 ifstream 对象。
open() 函数的标准语法,open() 函数是 fstream、ifstream 和 ofstream 对象的一个成员
void open(const char *filename, ios::openmode mode);//第一参数指定要打开的文件的名称和位置,第二个参数定义文件被打开的模式
对于第二个参数
ios::app 追加模式。所有写入都追加到文件末尾。
ios::ate 文件打开后定位到文件末尾。
ios::in 打开文件用于读取。
ios::out 打开文件用于写入。
ios::trunc 如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0
用法
ofstream out;
out.open("data.txt", ios::binary | ios::app | ios::in | ios::out);//输出为data.txt文件
out<<"内容"<<"\n";
out.close(); //关闭文件
注意ofstream持续写入文件,数据丢失的问题
对于for循环,持续写入文件,如下,全部写在for循环中,数据特别多时,不会丢失数据
int main()
{
ofstream out;
for(int i;i<xx.size();++i)
{
out.open("data.txt", ios::binary | ios::app | ios::in | ios::out);//输出为data.txt文件
out<<"内容"<<"\n";
out.close(); //关闭文件
}
}
如果这么写,将out.open写在for之外,一旦程序复杂,输出数据量特别大时,数据将可能发生丢失
int main()
{
ofstream out;
out.open("data.txt", ios::binary | ios::app | ios::in | ios::out);//输出为data.txt文件
for(int i;i<xx.size();++i)
{
out<<"内容"<<"\n";
}
out.close(); //关闭文件
}
并且千万要记得close掉文件。