あなたは答えを引用しました:
出力バッファーを明示的にフラッシュして、バッファーを強制的に書き込むことができます。
つまり、出力を「フラッシュ」して、基になるストリーム(ファイル、またはリストされている例では端末)に書き込む必要がある場合があります。
通常、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;