我希望能够告诉cout
在哪里写一些特定的文字,以便,例如,我可以通过在每次更改时覆盖它来显示越来越多的“更新”。登记/>
类似于Progress: 97%
的内容在同一个地方变为Progress: 98%
然后Progress: 99%
,可能无法每次都重新处理整个屏幕输出。
我记得QBasic(从很久以前开始)有一个特定于此目的的方法,但似乎我无法在C ++中找到更“现代”的东西。
无论我走到哪里,我都会看到有人提到Curses
或其他“被诅咒”的库,我担心这些库会使我的代码膨胀,带来不必要的功能,可能出现漏洞和故障。
或者更糟糕的是,他们建议只使用数十或数百\n
的输出流来“隐藏地毯下的灰尘”。
我想到的另一个想法是构建某种存储输出的数组,然后在循环的cout
- ish函数中处理,这样我所要做的就是改变部分我需要的数组,以某种方式清除当前屏幕内容并重新输出它与修改。
除此之外,仍需要Windows诅咒的system
库清除屏幕或仅Curses
;或者\n
机关枪功能来隐藏前一个输出。
更优雅和/或基于C ++标准的可行解决方案?
答案 0 :(得分:3)
更优雅和基于C ++标准的可行解决方案?
基本上没有,因为如上所述,C ++标准没有终端功能的概念。
虽然有standard escape character literal '\b'
用于放置退格(将光标放回当前行内)。这适用于大多数可用的终端类型。
答案 1 :(得分:3)
对于如图所示的简单代码,大多数人会使用简单的控制台输出,然后是\ r \ n。这会将光标移动到大多数终端上同一行的左侧位置,这样您就可以打印到顶部'已打印的线。这绝对不是C ++标准,但我发现它足够优雅。