Ответ 1
Вместо '\n'
используйте '\r'
:
std::cout << "\r10%" << std::flush;
Распечатайте новую строку ('\n'
) по завершении.
Важно использовать std::flush
, поэтому содержимое потока действительно выводится.
Хорошо, я немного смущен, чтобы задавать такую простую вещь, но все же.
У меня есть приложение командной строки и нужно показать прогресс пользователю.
Я мог бы написать прогресс в cout, например:
std::cout << "10%\n";
...
std::cout << "20%\n";
...
std::cout << "30%\n";
... но в результате пользователь увидит:
some line printed before
10%
20%
30%
...
... но мне действительно нужно, чтобы этот процент получил обновленный, как в начале:
some line printed before
10%
...
... и после обновления:
some line printed before
20%
...
... и после второго обновления:
some line printed before
30%
...
Как мне это достичь?
Вместо '\n'
используйте '\r'
:
std::cout << "\r10%" << std::flush;
Распечатайте новую строку ('\n'
) по завершении.
Важно использовать std::flush
, поэтому содержимое потока действительно выводится.
Используйте возврат каретки.
std::cout << "\r10%";
std::cout << "\r20%";
...
Переход к началу строки.