次のようなコードがあります。
_std::cout << "Beginning computations..."; // output 1
computations();
std::cout << " done!\n"; // output 2
_
ただし、問題は、出力#1と出力#2が(実質的に)同時に表示されることが多いことです。つまり、多くの場合、出力#1はcomputations()
が戻るまで画面に出力されません。出力#1の全体的な目的は、バックグラウンドで何かが行われていることを示すことであり(したがって、ユーザーの忍耐を促すため)、この問題は良くありません。
computations()
呼び出しの前に_std::cout
_バッファーを強制的に印刷する方法はありますか?あるいは、この問題を解決する標準出力に印刷する他の方法(_std::cout
_以外のものを使用)がありますか?
std::cout << "Beginning computations..." << std::flush;
また、 std::endl
は、改行を書き込んだ後もフラッシュします。
ジョセフ・マンスフィールドの答えに加えて、 std :: endl もフラッシュを行います(新しい行以外)。
出力シーケンスosにエンドライン文字を挿入し、os.put(os.widen( '\ n'))に続いてos.flush()を呼び出したかのようにフラッシュします。