控制台(显示屏)中的双缓冲?

jma*_*erx 2 c c++ console

我正在尝试创建一个控制台乒乓球游戏,但遇到了以下问题.我有以下内容:

int main()
{
    while(1)
    {
        clearScreen();

        std::stringstream sstr;
        for(int i = 0; i < 20; ++i)
        {
            sstr << "Mooooooo \n";
        }
        printf(sstr.str().c_str());
        restThread(50);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我期望的输出是Moo被写入20次,并且屏幕内容永远不会实际改变.然而,它不时闪烁.我怀疑这是因为输出在完全绘制之前显示在屏幕上.有没有解决的办法?例如,在所有角色都被绘制到屏幕之前,没有向用户显示任何内容?

谢谢

Fre*_*Foo 7

有curses/ncurses库,它要求您在显示任何内容之前刷新屏幕.它在平台支持方面非常普遍.