我希望能够告诉cout在哪里写一些特定的文本,例如,我可以显示一个不断增加的百分比,只要每次更改它就会覆盖它,从而可以“更新”。
类似Progress: 97%的东西,变成Progress: 98%,然后变成Progress: 99%,都放在同一位置,可能不必每次都重新处理整个屏幕输出。

我记得QBasic(从很早的时候开始)就有专门用于此目的的方法,但是似乎我在C++中找不到更多的“现代”东西。
无论走到哪里,我都会看到有人提到Curses或其他“已诅咒”的库,恐怕这些代码会因不需要的功能以及可能出现的漏洞和故障而肿我的代码。
或更糟糕的是,他们建议只用数十或数百个\n淹没输出流,以“隐藏地毯下面的灰尘”。

我想到的另一个想法是构建某种数组,该数组存储要在循环cout -ish函数中处理的输出,因此我要做的就是更改我需要的数组部分,以某种方式清除当前屏幕内容,并通过修改再次将其重新输出。
除非这仍然需要Windows的cursed system库来清除屏幕,或者只需要Curses即可;或\n机枪功能隐藏前一个输出。

还有更优雅和/或基于C++标准的可行解决方案吗?

最佳答案



基本上没有,因为如上所述,C++标准没有终端功能的概念。

尽管有standard escape character literal '\b' 用于放置一个退格键(将光标放回当前行内)。这应该适用于大多数可用的终端类型。

关于c++ - 如何确定在控制台上的哪里写文本? (即:97%98%99%…),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34596370/

10-11 18:05