La première boucle extrait de lignes filestr
jusqu'à ce qu'il n'y a plus rien à lire.
Il est difficile de comprendre pourquoi vous pensez qu'une deuxième boucle trouvera plus de lignes. Si la seconde boucle avait une entrée à lire, la première boucle l'aurait déjà lue.
Je ne peux pas suggérer un correctif en toute confiance, car vous ne nous avez pas dit ce que votre code est censé faire à la place. Cependant, en supposant filestr
est un flux de fichiers, vous voudrez peut-être déplacer le lire le curseur au début après votre clear
opération:
filestr.clear(); // clear any state flags
filestr.seekg(0, ios::beg); // move cursor to start so we read everything again
Si filestr
est mal nommé et représente en fait un flux non-fichier, vous pouvez Ne faites pas cela et vous aurez besoin d'une nouvelle approche de votre algorithme de pré-numérisation. En outre, vous devez éviter new
en faveur de std::vector
. Et vous devriez indenter votre code correctement au lieu de faire un gâchis.
Le code est mal formaté. Vous semblez penser que la 2ème boucle while est * imbriquée *, mais en fait elle est exécutée * après * la première boucle. – zett42