带cout的无缓冲输出

Cha*_*via 13 c++ cout

如何从cout获得无缓冲的输出,以便它立即写入控制台而无需刷新(类似于cerr)?

我认为可以通过rdbuf() - > pubsetbuf完成,但这似乎不起作用.下面的代码片段应该立即输出到控制台,然后等待几秒钟.但相反,它只是等待,只有在程序退出并刷新缓冲区时才输出.

#include <iostream>

int main()
{
        std::cout.rdbuf()->pubsetbuf(0, 0);
        std::cout << "A";
        sleep(5);
}
Run Code Online (Sandbox Code Playgroud)

mrd*_*law 35

std::cout.setf(std::ios::unitbuf);
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.