私はcoutを使って行を出力し、各行の後にスリープする非常に単純なプログラムを持っています。バッファーはどの点でも明確にフラッシュされないので、すべてが約7回の反復で良好であり、良好である。その後、私が想定しているのは、バッファの一部だけがすべての反復でフラッシュされるということです。私はバッファリングされた出力とcoutを理解していません
私はこの動作に関するいくつかの質問があります:バッファが出力の〜7行を収まるほどおそらく大きい場合
- を、なぜバッファは、一度に1本のラインをフラッシュですか?
- このバッファが実際にこのようにフラッシュされている場合、これにはどのような利点がありますか?バッファ全体が一度にフラッシュされないのはなぜですか?
正確に同じ文字数が私の行の長さとして出力にフラッシュされるか、 '\ n'のような行末の区切り文字に基づいて内部的にフラッシュされるcoutバッファですか?
int main(){ for(int i = 0; i < 100; ++i){ std::cout << "This is line " << i << '\n'; Sleep(1000); } return 0; }
「\ n」の有無にかかわらず、あなたが期待したように、約1秒ごとに印刷されます。 –