16

cout からバッファリングされていない出力を取得して、フラッシュする必要なく即座にコンソールに書き込むにはどうすればよいでしょうか (cerr と同様)。

rdbuf()->pubsetbuf でできると思ったのですが、うまくいかないようです。以下のコード スニペットは、すぐにコンソールに出力され、数秒待機することになっています。しかし代わりに、ただ待機し、プログラムが終了してバッファがフラッシュされたときにのみ出力します。

#include <iostream>

int main()
{
        std::cout.rdbuf()->pubsetbuf(0, 0);
        std::cout << "A";
        sleep(5);
}
4

1 に答える 1

40

次のいずれかを呼び出すことにより、各出力操作の後に出力をフラッシュするようにフラグを設定できます。std::ios_base::unitbuf std::ios_base::setf

std::cout.setf(std::ios::unitbuf);

またはマニピュレータを使用して:std::unitbuf

std::cout << std::unitbuf;
于 2009-09-04T03:34:55.800 に答える