c++ - 如何在不重新打印的情况下更新终端中的打印消息

我想为我的终端应用程序制作一个进度条,其工作方式类似于:

 [XXXXXXX       ] 

这将直观地指示在该过程完成之前还剩下多少时间。

我知道我可以通过将它们添加到字符串中然后简单地 printf 来打印越来越多的 X,但这看起来像:

 [XXXXXXX       ] 
 [XXXXXXXX      ] 
 [XXXXXXXXX     ] 
 [XXXXXXXXXX    ] 

或类似的东西(显然您可以使用间距。)但这在视觉上并不美观。有没有办法在不重新打印的情况下用新文本更新终端中的打印文本?这都是linux、c++下的。

最佳答案

在打印新的“版本”时尝试使用 \r 而不是 \n

for(int i=0;i<=100;++i) printf("\r[%3d%%]",i);
printf("\n");

https://stackoverflow.com/questions/1337529/

相关文章:

linux - 在 PHP CLI 中设置 max_execution_time

linux - 为什么 Linux 不通过 TSS 使用硬件上下文切换?

linux - "zero copy networking"与 "kernel bypass"?

ruby-on-rails - Ruby on Rails - 无法将 "\x89"从 ASCII-

python - 在 Ubuntu 中启动时运行 Python 脚本

c++ - 如何在 Linux 中命名线程?

c - 为什么 pthread 互斥锁被认为是 "slower"而不是 futex?

linux - 使用 linux 命令行 (bash) 从网络摄像头拍照

c - 在 Linux 中何时使用 pthread_exit() 以及何时使用 pthread_jo

linux - Vagrant 的鸡和蛋 : Shared folder with uid = ap