如何从cout获得无缓冲输出,以便它立即写入控制台而无需刷新(类似于cerr)?
我认为可以通过rdbuf() - > pubsetbuf完成,但这似乎不起作用。下面的代码片段应该立即输出到控制台,然后等待几秒钟。但相反,它只是等待,并且仅在程序退出并刷新缓冲区时输出。
#include <iostream>
int main()
{
std::cout.rdbuf()->pubsetbuf(0, 0);
std::cout << "A";
sleep(5);
}
答案 0 :(得分:33)
std::cout.setf(std::ios::unitbuf);
应该做的伎俩。