流操作看不到内容输出的一个可能原因

在写内容到一个流时,必须要刷新缓冲区后内容才会写到流内,或者当流关闭(打开流的进程结束也叫流关闭,当然,如果进程非正常结束那么情况未定义)才会刷新缓冲区写入流,这种特性如果不注意就会产生一个很不明显的错误。

比如,有一个程序要求不断循环写入一个Log文件,这时可以这样做:

ofstream fout;

fout.open("XXX.XXX",ios::app);

while(1)

{

fout<<"XXXXXXXXXXXX\n";

}

这时如果程序不结束,即循环一直进行,那么会看到文件中并没有内容输出,就会造成错觉觉得流没有操作正确,其实内容已经写至流缓冲区,只是还没有刷新,所以就没有写入到文件。只要把循环内容改成:

fout<<"XXXXXXXXXXXX"<<endl;

就可以看到有内容输出。

是个很小的细节,但不注意就会调试很久找不到原因。被这个问题纠结了好一会,特此记录一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值