Добавление строки состояния в консольные приложения c ++ - PullRequest
3 голосов
/ 20 ноября 2011

Я делаю приложение для Linux с использованием C ++, и оно выводит информацию на консоль.Отдельные части программы потребуют времени для вычисления, и я хотел бы добавить в консоль строку состояния, аналогичную той, которая используется в wget (ниже я приведу собственное изображение).лучший способ достичь этой цели?Существуют ли какие-либо полезные библиотеки, облегчающие добавление этой функции?

Ответы [ 2 ]

5 голосов
/ 20 ноября 2011

Если ваша программа похожа на wget, то есть это в основном пакетная программа без необходимости полноэкранного пользовательского интерфейса (для которого я бы порекомендовал 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";
}
1 голос
/ 20 ноября 2011

Библиотека ncurses должна быть вам полезна.Или вы можете написать строку прогресса char за char, используя backspaces, вызывая fflush или std::flush и т. Д.

Более простой способ - просто выводить точки ...

...