python c++ 写文件 flush 缓冲区 即时显示

当写入文件的规模很大,时间很长。

普通的写入方法

:filew.write("aa")

会一直等到缓冲区满或者达到某一限定值时,才会从缓冲区写入到文件,这样就会不知道程序运行到哪一步了。(有一般的方法在某些循环的步骤输入一个标记变量,)

我就想应该有边写入,边显示的功能。

while 1:

  filew.write("aa");

  time.sleep(5);

  filew.flush(); #刷新输出缓存。

http://m.oschina.net/blog/148227

在c++中的写入情况:

每个IO对象管理一个缓冲区,用于存储程序读写的数据:

os<<"sssssssss:";

系统将字符串字面值存储在与流os相关的缓冲区中。

一下几种情况会刷新缓冲区,即写入到真是的输出设备或者文件。

1.程序正常结束。作为main 返回工作的一部分,将清空所有输出缓冲区。

2.在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区会在下一个值写入前刷新。

3.用操纵符(manipulator)显示的刷新缓冲区,例如结束符endl;

  cout<<"ss"<<endl;// insert a newline ,flush

  cout<<"dd"<<ends;//inserts a null,flush

  cout<<"ee"<<flush;//flush the buffer

4.在每次输出操作执行完后,用unitbuf操纵符设置流的内部状态,从而清空缓冲区。

  cout<<unitbuf<<"sd"<<" ggg "<<nounitbuf; //等价于下面的语句

  cout<<"sd"<<flush<<" ggg "<<flush;

5.将输出流和输入流关联起来(tie)。在读输入流时将刷新器关联的输出缓冲去。

如果程序崩溃了,缓冲区不会刷新,在缓冲区上的数据不会写入到文件中。

这样会使之前的工作功亏一篑,而且不便于排错。要多用刷新。多用endl而不是“\n”.