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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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?