我如何决定在控制台的哪个位置写入文本? (即:97% 98% 99%...)

How do I decide where to write text on the console? (ie: 97% 98% 99%....)

我希望能够告诉 cout 在哪里写一些特定的文本,例如,我可以通过每次覆盖它来显示增加的百分比 "updated"它改变了。
Progress: 97% 变成 Progress: 98% 然后 Progress: 99% 都在同一个地方,可能不需要每次都重新处理整个屏幕输出。

我记得 QBasic(从很久以前开始)有一个专门用于此目的的方法,但似乎我在 C++ 中找不到更多 "modern"。 无论我走到哪里,我都会看到人们提到 Curses 或其他 "cursed" 库,我担心它们会使我的代码膨胀,包含不需要的功能以及可能的漏洞和故障。
或者更糟的是,他们建议只用数十或数百个 \n 到 "hide the dust under the carpet".

淹没输出流

我刚刚想到的另一个想法是构建某种数组来存储输出,然后在循环 cout-ish 函数中进行处理,这样我所要做的就是更改我需要的数组部分,以某种方式清除当前屏幕内容并通过修改重新输出它。 除非这仍然需要 Windows' 被诅咒的 system 库来清除屏幕或者只是 Curses;或 \n 机关枪函数来隐藏之前的输出。

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

Any more elegant and C++ standard based viable solution?

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

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

对于如图所示的简单代码,大多数人会使用简单的控制台输出,后跟 \r。这会将光标移动到大多数终端上同一行的左侧位置,因此您可以打印 'on top' 已打印的行。这绝对不是 C++ 标准,但我觉得它足够优雅。