繁体   English   中英

回车多行

[英]Carriage Return Multiple Lines

我正在开发基于控制台的FPS /时钟显示器,用于调试我正在开发的Allegro游戏,而且我一直在尝试找出如何在不粘贴任意系统的情况下更改控制台输出(“ cls” )放在我的游戏循环顶部。

现在我有...

while(game.running())
{
    std::cout
        << "\r" << "FPS: " << getFrameRate()
        << "\n"
        << "\r" << "TIME: " << getTime();

    // Other game loop things...
}

我要的是这样的东西,每次都会重写该行。

FPS: ___
TIME: ___

(其中___是当前值是什么)

但是当我跑步时我得到...

FPS: ___
FPS: ___
FPS: ___
TIME: ___

↑继续......在屏幕的最底部填充FPS:__和单个TIME:__,而不会覆盖。

'\\ r'一直使我感到困惑,而且我还没有在Google上找到任何有用的东西。 任何帮助表示赞赏。

当您发出'\\ r'时,它将光标置于当前行的开头。 但是,如果通过发出'\\ n'向下移动当前行,则下一个'\\ r'将返回到该新行的开头。

您将必须发出终端字符以将插入符号返回到屏幕的左上角。

如何使用putchar(int)呢? 像putchar(0x08)退格键一样。

我不确定,但是问题是CR(0x0D回车)和LF(0x0A换行)无法正常工作。 也许是因为std :: cout类仅在几次getFrameRate()调用之后才会刷新为标准输出(在您的情况下为终端)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM