出力するたびにフラッシュする

C++標準のIOStreamには、std::unitbufフラグというのがあります。これを出力ストリームに設定することで、繰り返し出力を行う処理で、出力するたびにフラッシュが行われるようになります。

#include <fstream>

int main()
{
    std::ofstream file("a.txt");
    file << std::unitbuf;

    for (int i = 0; i < 10; ++i) {
        file << i; // 出力するたびにフラッシュされる
    }
}

これは、以下のコードと同じ意味になります:

#include <fstream>

int main()
{
    std::ofstream file("a.txt");

    for (int i = 0; i < 10; ++i) {
        file << i;
        file.flush(); // 自分でフラッシュする
    }
}