退出后的Fstream输出

时间:2015-10-14 20:50:19

标签: c++ output fstream

我有问题。我使用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();
}

1 个答案:

答案 0 :(得分:1)

如果您希望数据立即显示,则需要flush文件:

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

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