Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Как изменять выведенный текст в консоли посредством cout?

#cpp


Есть простая программа производящая долгие вычисления. Хотелось бы на каждой итерации
цикла выводить ее номер (ну или текщий процент выполнения) в консоль, при этом желательно
изменяя только последнюю строку. Например вывод

Start
Function result 45123
Testing ...
Comleted 45%


Так вот по ходу надо бы изменять только строку Comleted 45% а остальное не трогать.
Вывод осуществляю через cout. Как такое сделать?
    


Ответы

Ответ 1



Вот пример кода. sleep исключительно для того, что бы создать задержку. #include #include // для sleep int main() { for (int i = 0; i < 100; i+=10) { std::cout << "\rCompleted " << i << "% " << std::flush; sleep(1); } std::cout << "\rDone " << std::endl; return 0; } std::flush нужен, так как стандартные потоки любят буферизировать ввод-вывод (закомментируйте и посмотрите на результат). \r переводит вывод в начало строки, не переходя на новую строку. Пара пробелов после процента нужна, так как строка не очищается и нужно затирать пробелами "хвост".

Ответ 2



вот еще способ. писал под windows но можно переписать и под линукс #include int main() { for (int i = 0; i < 100; i+=10) { system("cls"); // очистить терминал std::cout << "Completed " << i << "%" << std::endl; system("ping -n 2 127.0.0.1 > c:\\111.txt"); // вместо ф-ии sleep которой у меня нет } std::cout << "Done" << std::endl; return 0; }

Комментариев нет:

Отправить комментарий