Код ниже, адаптированный из этого вопроса .Обратите внимание, что я добавил Windows.h
, чтобы использовать функцию Sleep
.Это просто для того, чтобы показать, как это работает.Вы можете просто удалить его или изменить на рабочую альтернативу * nix.Функция работает асинхронно, поэтому вы можете выполнять другие действия, пока индикатор выполнения еще не загружен полностью.
#include <iostream>
#include <future>
#include <thread>
#include <Windows.h>
void load() {
float progress = 0.0;
while (progress < 1.0) {
int barWidth = 70;
int pos = barWidth * progress;
Sleep(100);
std::cout << "[";
for (int i = 0; i < barWidth; i++) {
if (i < pos) std::cout << "=";
else if (i == pos) std::cout << ">";
else std::cout << " ";
}
std::cout << "]" << int(progress * 100.0) << " %\r";
std::cout.flush();
progress += 0.01;
}
std::cout << std::endl;
}
int main() {
std::future<void> startLoading = std::async(std::launch::async, load);
// Do something while loading...
for (int i = 0; i < 100; i++) {
std::cout << i << " ";
}
return 0;
}