c++ - 退出后fstream输出

标签 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();
}

最佳答案

如果你想让数据立即出现,你需要flush文件:

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

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

关于c++ - 退出后fstream输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33135337/

相关文章:

logging - 我可以使用 Jenkins 日志解析器隐藏控制台行吗

c++ - 链接 operator<< 和 operator++ 的问题

c++ - 使用 std::equal 和命名空间时出现 "No match operator=="错误

c++ - 如何在使用 CMake 构建时列出 .hpp 头文件

java - 如何禁用 native 库输出?

c++读取txt文件并复制到两个类istream::peek()

c++ - 处理大文件(> 2GB)时将 pos_type 分配给 uint64_t 是否安全?

c++ - 写入 HTML 文件的顺序

c++ - 套接字配置中的 TCP 重传

c++ - 使用类 Visual C++ 2010