无法在包含 sleep() 的循环中写入文件
Can't write to file in a loop containing sleep()
我的问题的本质是我不能用sleep()在循环中写入文件。如果我有以下代码:
ofstream file
file.open("file.name");
for(;;) {
file << "HELLOn";
}
这段代码工作完美,并将HELLO反复打印到"file.name"中。然而,我想做这样的事情(我正在记录来自实时应用程序的数据):
for(;;) {
file << "HELLOn";
sleep(1);
}
这似乎没有打印任何东西到我的文件。什么好主意吗?
需要刷新输出。输出流将数据缓冲到内存中,而不是将其写入磁盘。您应该使用std::endl
(输出换行符并刷新)而不是字符串字面值'n'
,或者使用std::flush
显式刷新流:
for(;;) {
file << "HELLO" << endl;
}
// or
for(;;) {
file << "HELLOn" << flush;
}
你要找的神奇词是"flush"。
c++ std::ofstream flush() but not close()
在休眠之前,刷新文件,这样它就不会挂起在缓冲区中,等待有足够的更改来麻烦地写出来。
这可能只是一个缓冲问题。因为你现在写得慢了很多,输出缓冲区不会很快填满,所以你可能看不到写的数据。尝试在睡眠前添加flush()。
file.flush()
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 使用fstream对txt文件中的数字进行循环
- 视觉 如何循环访问C++中遵循类似格式的多个.txt文件?
- C/C++:socket() 创建在循环中失败,打开的文件太多
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- 虽然循环不读取整个 ifstream 文件
- 如何在头文件中声明类模板(由于循环依赖关系)
- 如何使用循环逐个读取C++中的多个文件
- 是否可以在文本文件中找到最长单词的长度,并在同一个文本文件中读取,只需 1 个 while 循环?
- 如何循环 n 次,在 xml 文件中每个循环一个级别
- 如何通过一个循环将多个文件的内容分配给不同的类属性?
- 从文件 C++ 读取时的无限循环
- 从文件读取,并循环访问文件以写入数组
- 从文件导入数据时遇到问题.我有一个没完没了的循环
- C++:从文件中读取x y数据会产生无限循环吗
- 如何在不循环的情况下使用getline读取文件
- 是否可以在一个循环中写入多个二进制文件
- 对于循环文件,数据正在重复并跳过其他行c++
- 循环文件映射会降低性能
- 磁盘IO循环文件写入问题