如何在命令提示符中替换已打印的文本?

gab*_*lin 2 c text command-prompt

很多时候我见过基于文本的程序来替换已经打印过的文本.例如,想象一个将进度打印为的程序

Loading: 5%
Run Code Online (Sandbox Code Playgroud)

然后它说

Loading: 10%
Run Code Online (Sandbox Code Playgroud)

等等,没有打印附加的新文本?

这是怎么做到的?我还没有在库中看到任何这样的函数(在本例中为C).不过我有一个想法:你可以编写一个字符,将提示返回到当前行的开头(\r我相信).这可以用来"覆盖"你已经打印到命令提示符的内容吗?

Ada*_*eld 7

在大多数控制台中,在\r没有换行符的情况下编写裸回车符将使光标返回到当前行的开头,允许您覆盖现有文本.写入退格符\b也会将光标移回一个字符.

对于简单的行为,例如进度指示器,这就是您所需要的.对于更复杂的行为,您需要通过非标准方式控制终端.在基于Unix的系统上,可以使用ncurses库 - 它可以完全控制光标位置,文本颜色,键盘回显,更细粒度的键盘输入等.

在Windows上,有一套用于操作控制台的功能,它们可以与Unix控制台完全相同.