あなたは答えを引用しました:
出力バッファーを明示的にフラッシュして、バッファーを強制的に書き込むことができます。
つまり、出力を「フラッシュ」して、基になるストリーム(ファイル、またはリストされている例では端末)に書き込む必要がある場合があります。
通常、stdout / coutはラインバッファリングされます。出力は、改行を書き込むか明示的にバッファをフラッシュするまでOSに送信されません。のようなものはstd::cout << "Mouse moved (" << p.x << ", " << p.y << ")" << endl
、基礎となる「ファイル」への書き込みが6回ではなく1回だけになるので、パフォーマンスが大幅に向上します。欠点は、次のようなコードです。
for (int i = 0; i < 5; i++) {
std::cout << ".";
sleep(1); // or something similar
}
std::cout << "\n";
.....
すぐに出力されます(正確なsleep
実装については、この質問を参照してください)。このような場合は<< std::flush
、出力が確実に表示されるようにするために追加が必要になります。
cin
フラッシュを読み取るcout
ため、これを行うために明示的なフラッシュは必要ありません。
std::string colour;
std::cout << "Enter your favourite colour: ";
std::cin >> colour;