c ++:如何无限地将文本写入文件(在无限循环内)?

时间:2015-04-16 14:59:15

标签: c++ linux

我需要每5秒无限地写入一个文件(.txt) 这是我的代码:

#include <iostream>
#include <string>
#include <fstream>
#include <unistd.h>
#include <stdio.h>

using namespace std;

int main()
{
    ofstream file("inc.txt");

    while(true)
    {
        file << "Whatever\n" ;
        sleep(5);
    }
}

当我运行程序时,.txt文件没有任何变化!

2 个答案:

答案 0 :(得分:4)

你已经在文件中无限地写了。但是通过缓冲,你没有在文件中看到结果,使用flush解决了:

while (true)
{
    file << "Whatever\n";
    file.flush(); // Force the write into the file.
    sleep(5);
}

答案 1 :(得分:3)

文件输出缓冲以防止硬盘过度磨损。要花费很长时间,每秒1.8个字节,才能达到缓冲区限制并看到可观察到的结果。

如果您希望立即看到每一行,您可以手动请求缓冲区刷新:

file << "Whatever\n" << flush;

或等同地:

file << "Whatever" << endl;