无法在包含sleep()的循环中写入文件

vet*_*982 0 c++ fstream file

我的问题的本质是我无法使用sleep()在循环中写入文件.如果我有以下代码:

ofstream file
file.open("file.name");

for(;;) {
    file << "HELLO\n";
}
Run Code Online (Sandbox Code Playgroud)

此代码完美运行并将HELLO重复打印到"file.name".但是,我想做这样的事情(我正在记录来自实时应用程序的数据):

for(;;) {
    file << "HELLO\n";
    sleep(1);
}
Run Code Online (Sandbox Code Playgroud)

这似乎不会在我的文件中打印任何内容.有任何想法吗?

Ada*_*eld 6

您需要刷新输出.输出流将数据缓冲到内存中,但不将其写入磁盘.您应该使用std::endl(打印换行符和刷新)而不是字符串文字'\n',或使用以下方法显式刷新流std::flush:

for(;;) {
    file << "HELLO" << endl;
}
// or
for(;;) {
    file << "HELLO\n" << flush;
}
Run Code Online (Sandbox Code Playgroud)