C + + изменение вывода на консоли

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

Ответ 1

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

Помните сбросить вывод каждый раз, например

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

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

enter image description here

Ответ 2

Используйте символ обратного пробела.

cout << "10%";
// ...
cout << "\b\b\b20%";

Ответ 3

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

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

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