#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 но можно переписать и под линукс #includeint 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; }
Комментариев нет:
Отправить комментарий