14

と の違いendlなど\nの質問は、 SO で何度も回答されていることを理解しています。endlしかし、彼らはバッファを にフラッシュできることだけを述べていますが、そうではstdoutあり\nません。

したがって、バッファがフラッシュされることで私が理解しているのは、指定された入力がバッファに格納され、 、またはいくつかの明示的な関数stdoutに遭遇した場合にのみ渡されるということです。もしそうなら、私は次のコードを期待していました:endlflush

#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ます。

4

2 に答える 2