很多时候我见过基于文本的程序,它们取代了已经打印过的文本。例如,假设一个程序将进度打印为
Loading: 5%
然后它说
Loading: 10%
等等,没有打印追加的新文字?
这是怎么做到的?我还没有在库中看到任何这样的函数(在本例中为C)。我有一个想法:有一个你可以编写的字符,它将提示返回到当前行的开头(我相信\r
)。这可以用来“覆盖”你已经打印到命令提示符的内容吗?
答案 0 :(得分:7)
在大多数控制台中,写一个裸支架返回\r
后没有换行符,它会将光标返回到当前行的开头,允许您覆盖现有文本。写入退格符\b
也会将光标移回一个字符。
对于简单的行为,例如进度指示器,这就是您所需要的。对于更复杂的行为,您需要通过非标准方式控制终端。在基于Unix的系统上,可以使用ncurses库 - 它可以完全控制光标位置,文本颜色,键盘回显,更精细的键盘输入等。
在Windows上,有一个suite of functions用于操纵控制台,它们可以与Unix控制台完全相同。
答案 1 :(得分:2)
我看到的一种方法是只打印退格字符多次,然后用新文本替换你删除的内容。
退格符是由\ b。
表示的ASCII控制字符