我的问题的本质是我无法使用sleep()在循环中写入文件。如果我有以下代码:
ofstream file
file.open("file.name");
for(;;) {
file << "HELLO\n";
}
此代码完美无缺,并将HELLO重复打印到“file.name”中。但是,我想做这样的事情(我正在记录来自实时应用程序的数据):
for(;;) {
file << "HELLO\n";
sleep(1);
}
这似乎没有在我的文件中打印任何内容。有什么想法吗?
答案 0 :(得分:6)
您需要刷新输出。输出流将数据缓冲到内存中,但不将其写入磁盘。您应该使用std::endl
(打印换行符和刷新)而不是字符串文字'\n'
,或使用std::flush
显式刷新流:
for(;;) {
file << "HELLO" << endl;
}
// or
for(;;) {
file << "HELLO\n" << flush;
}
答案 1 :(得分:3)
答案 2 :(得分:2)
这可能只是一个缓冲问题。因为您现在编写的速度要慢得多,所以输出缓冲区的填充速度不会太快,因此您可能无法“看到”写入的数据。尝试在睡眠前添加flush()。
file.flush()