15 votes

C++ changeant la sortie sur la console

Quel est le moyen le plus simple d'afficher des nombres changeants dans la console ? J'ai un programme en ligne de commande normal en C++ qui utilise cout Mais j'aimerais afficher un pourcentage représentant la progression qui compte jusqu'à 100 sans imprimer une nouvelle ligne. Comment cela est-il possible ? (Si cela a de l'importance : je suis sous Windows 7)

31voto

Cheers and hth. - Alf Points 59647

Lorsque j'en ai eu besoin, j'ai simplement produit un retour chariot caractère, en C++ \r .

N'oubliez pas de affleurer la sortie à chaque fois, par exemple

cout << "\r" << x << "% completed.       " << flush;

Les espaces à la fin pour effacer la sortie précédente sur la ligne en cas de progression fluctuante de type Microsoft.

enter image description here

11voto

dan04 Points 33306

Utiliser le caractère d'effacement.

cout << "10%";
// ...
cout << "\b\b\b20%";

5voto

nobar Points 5849

Je place normalement un retour chariot après l'information sur la progression. De cette manière, toute autre sortie apparaîtra comme normale (tant qu'il y a suffisamment de caractères dans la ligne pour écraser complètement les informations de progression).

    cerr<<percentage<<"% \r";

D'ailleurs, je préfère utiliser cerr plutôt que cout pour ce genre d'informations d'état/de diagnostic, de sorte que cout puisse être réservé au vrai contenu. De cette façon, vous pouvez rediriger la sortie normale du programme vers un fichier et continuer à voir la progression dans la console. De plus, avec cerr, vous n'avez pas besoin d'utiliser "flush".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X