我的问题的本质是我无法使用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)
这似乎不会在我的文件中打印任何内容.有任何想法吗?
您需要刷新输出.输出流将数据缓冲到内存中,但不将其写入磁盘.您应该使用std::endl(打印换行符和刷新)而不是字符串文字'\n',或使用以下方法显式刷新流std::flush:
for(;;) {
file << "HELLO" << endl;
}
// or
for(;;) {
file << "HELLO\n" << flush;
}
Run Code Online (Sandbox Code Playgroud)