代码之家  ›  专栏  ›  技术社区  ›  Charles Salvia

无缓冲输出

  •  12
  • Charles Salvia  · 技术社区  · 15 年前

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

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

    #include <iostream>
    
    int main()
    {
            std::cout.rdbuf()->pubsetbuf(0, 0);
            std::cout << "A";
            sleep(5);
    }
    
    1 回复  |  直到 12 年前
        1
  •  33
  •   mrduclaw    15 年前
    std::cout.setf(std::ios::unitbuf);
    

    应该有技巧。