Verwenden Sie bei einer festen Breite Ihrer Ausgabe Folgendes:
float progress = 0.0;
while (progress < 1.0) {
int barWidth = 70;
std::cout << "[";
int pos = barWidth * progress;
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.16;
}
std::cout << std::endl;
http://ideone.com/Yg8NKj
[> ] 0 %
[===========> ] 15 %
[======================> ] 31 %
[=================================> ] 47 %
[============================================> ] 63 %
[========================================================> ] 80 %
[===================================================================> ] 96 %
Beachten Sie, dass diese Ausgabe eine Zeile untereinander angezeigt wird , aber in einem Terminalemulator (ich denke auch in der Windows-Befehlszeile) in derselben Zeile gedruckt wird .
Vergessen Sie am Ende nicht, eine neue Zeile zu drucken, bevor Sie weitere Inhalte drucken.
Wenn Sie die Leiste am Ende entfernen möchten, müssen Sie sie mit Leerzeichen überschreiben, um beispielsweise etwas kürzeres zu drucken "Done."
.
Das gleiche kann natürlich auch printf
in C gemacht werden; Das Anpassen des obigen Codes sollte einfach sein.