C++读写操作ofstream(数据丢失问题)

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掉文件。

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值