Bonjour,
J'ai un code qui tourne sur un grand nombre d'éléments, et pendant qu'il tourne j'aimerais afficher une ligne du type "Elément XXXX", avec XXXX le numéro de l'élément, qui se mettrait à jour tous les 1000 éléments.
J'ai donc quelque chose du style:
1 2 3 4 5 6
|
for(int i=0; i<allentries; i++){
if(! i%1000) cout << "\rElément " << i;
// Plein de choses longues et compliquées
} |
Ça a l'air tout bête mais ça ne marche pas! Il n'y a rien qui s'affiche du tout, et quand je quitte le programme (ctrl+c), juste avant de quitter il imprime "Elément 89000" (par exemple).
J'ai essayé de varier la vitesse d'actualisation:
- tous les éléments, ça marche mais ça ralentit fortement le programme
- tous les 10 éléments, idem
- tous les 100 éléments, ça marche à moitié: il actualise la ligne aléatoirement, de manière saccadée (le numéro est bien un multiple de 100, mais il en "loupe" un certain nombre)
Je précise qu'il n'y a aucun soucis lorsque je remplace la ligne en question par:
if(! i%1000) cout << "Elément " << i << endl;
Quand je fais un code-bidon avec juste un boucle et cette ligne, ça marche quand la boucle ne contient rien d'autre, mais le même problème apparaît quand j'ajoute un simple sleep(1).
J'ai longuement cherché sur le net quelqu'un qui aurait le même soucis, sans succès.
Une idée?
Partager