退出后的Fstream输出

Fstream outputs after exit

本文关键字:输出 Fstream 退出      更新时间:2023-10-16

我有一个问题。我使用fstream打印到一个文件,但它不是实时打印,它在我关闭程序后输出所有内容(就像它在程序运行时存储所有数据并在退出后立即打印所有内容)。如果我隐藏控制台FreeConsole();,即使在退出后它也不会输出任何东西。我以前(大概半年前)没有这个问题。

无论如何,下面是代码:

#include <fstream>
#include <windows.h>
std::fstream file("xx.txt", std::ios::out);
int main()
{
    FreeConsole();
    while(true)
    {
        file << "X";
        Sleep(500);
    }
    file.close();
}

如果您想要立即显示数据,您需要对文件进行flush:

file << "X"; 
file.flush();

ofstream内部维护一个写入数据的缓冲区,当您调用flushclose时,该缓冲区将写入实际文件。这个缓冲区的存在是为了减少重复写入文件时产生的磁盘I/O量。