将状态栏添加到c ++控制台应用程序

mar*_*ega 3 c++ linux console status progress-bar

我正在使用C++制作一个Linux应用程序,它会将信息输出到控制台.程序的某些部分需要一段时间来计算,我想在控制台中添加一个状态栏,类似于wget中使用的状态栏(我在下面给出了我自己的描述).

%complete[===========>               ] eta
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?是否有任何有用的库可以轻松添加此功能?

ibi*_*bid 5

如果你的程序就像wget,也就是说,它基本上是一个批处理程序而不需要全屏UI(我建议使用ncurses),你可以使用这个技巧来打印一个回车符(但不是换行符)你的路线; 你写的下一件事将覆盖同一行.

这是一个演示.

#include <iostream>
#include <unistd.h>

int main(void)
{

        for (int i = 0; i < 10; i++) {
                std::cout << "Status: " << i << "\r" << std::flush;
                sleep(1);
        }
        std::cout << "Completed.\n";
}
Run Code Online (Sandbox Code Playgroud)

  • 不错的把戏。但要注意每一行都和前一行一样长(否则输出结尾空格) (2认同)