C ++ изменяет вывод на консоли - PullRequest
13 голосов
/ 13 февраля 2011

Какой самый простой способ отобразить меняющиеся числа в консоли?У меня есть обычная программа командной строки на C ++, которая использует cout, но я хотел бы отобразить процентное число, представляющее прогресс, который насчитывает до 100, без печати новой строки.Как это сделать?(Если это имеет значение: я на Windows 7)

Ответы [ 3 ]

29 голосов
/ 13 февраля 2011

Когда мне нужно, чтобы я только что вывел символ возврата каретки , в C ++ \r.

Не забывайте очищать вывод каждый раз, например

cout << "\r" << x << "% completed.       " << flush;

пробел в конце, чтобы очистить предыдущий вывод в строке в случае колебания прогресса, подобного Microsoft.

enter image description here

11 голосов
/ 13 февраля 2011

Используйте символ возврата на одну позицию.

cout << "10%";
// ...
cout << "\b\b\b20%";
5 голосов
/ 13 февраля 2011

Обычно я ставлю возврат каретки после информации о ходе выполнения. Таким образом, любой другой вывод будет выглядеть нормальным (если в строке достаточно символов, чтобы полностью перезаписать информацию о ходе выполнения).

    cerr<<percentage<<"% \r";

Кстати, я предпочитаю использовать cerr вместо cout для такого рода информации о состоянии / диагностике, чтобы cout можно было зарезервировать для реального контента. Таким образом, вы можете перенаправить обычный вывод программы в файл и по-прежнему видеть прогресс в консоли. Кроме того, для cerr вам не нужно использовать «flush».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...