我有问题。我使用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();
}
答案 0 :(得分:1)
如果您希望数据立即显示,则需要flush
文件:
file << "X";
file.flush();
ofstream
在内部维护一个写入数据的缓冲区,当您调用flush
或close
时,该缓冲区会写入实际文件。此缓冲区用于减少重复写入文件时产生的磁盘I / O量。