と の違いendl
など\n
の質問は、 SO で何度も回答されていることを理解しています。endl
しかし、彼らはバッファを にフラッシュできることだけを述べていますが、そうではstdout
あり\n
ません。
したがって、バッファがフラッシュされることで私が理解しているのは、指定された入力がバッファに格納され、 、またはいくつかの明示的な関数stdout
に遭遇した場合にのみ渡されるということです。もしそうなら、私は次のコードを期待していました:endl
flush
#include <iostream>
#include <unistd.h>
int main(void)
{
std::cout << "Hello\nworld";
sleep(2);
std::cout << std::endl;
return 0;
}
表示する:
2秒後
Hello
World
しかし、実際の出力は次のとおりです。
Hello
2秒後
World
なぜそうなのですか?
\n
もバッファに格納すべきではなく、バッファが見つかった場合にのみ、endl
にフラッシュ/表示されますstdout
が、私が観察したところ\n
、 と同じように動作していendl
ます。