Если ваша программа похожа на wget, то есть это в основном пакетная программа без необходимости полноэкранного пользовательского интерфейса (для которого я бы порекомендовал ncurses ), вы можете использовать трюк для печати возврат каретки (но не перевод строки) после вашей строки; следующая вещь, которую вы напишите, перезапишет ту же строку.
Вот демонстрация.
#include <iostream>
#include <unistd.h>
int main(void)
{
for (int i = 0; i < 10; i++) {
std::cout << "Status: " << i << "\r" << std::flush;
sleep(1);
}
std::cout << "Completed.\n";
}