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”.