c++中文件输入输出为什么不是立即的?

来源:百度知道 编辑:UC知道 时间:2024/07/05 17:23:30
比如
ofstream gg("client.dat", ios::out);
gg.write("aaaaaa",2);
gg.write("bbbb",2);
int t;
cin>>t;
当等待输入t时,打开client.dat,里面是空的,只有整个程序结束时才有内容,如何让它立刻就输入到文件呢

c++的流都是有缓冲的,为了提高效率,必须减少写硬盘的次数,这样c++设置了缓冲区,write不直接写硬盘,而是写入一块叫缓冲区的内存,等缓冲区写满后,再一次把缓冲区内的数据写入硬盘。

调用gg.flush就可以立即把缓冲区内容写入硬盘。

ofstream gg("client.dat", ios::out);
gg.write("aaaaaa",2);
gg.write("bbbb",2);
gg.flush();
int t;
cin>>t;