Probleme boucles Fstream comparaison

nerone21 Messages postés 108 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 5 mai 2011 - 29 déc. 2006 à 16:43
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 29 déc. 2006 à 18:28
Bonsoir a vous les serials codeurs, alors j'aurais besoin de vos lumiere car j'ai un petit gros probleme que je ne comprend pas.
voici mon code en dessous, et mon probleme est que cette fonction  est censé me comparer 2 fichier texte ligne a ligne (bon c'est peut etre pas trés clair... dsl)
toujours es-t'il que j'extrais la premiere ligne de mon premier fichier txt et je veut la comparer a tte les lignes du deuxieme fichier txt donc la premiere comparaison ce passe bien, et là c'est le drame!!! lorsque je passe a la deuxieme comparaison, je recupere bien la deuxieme ligne de mon premier fichier, mais lorsque j'essai de recuperer les lignes du deuxieme fichier, je n'arrive pas a rentrer ds la boucle while, c'est comme si il advenait une erreur lors de l'appel au "getline(fichiertemp,lignetemp);" donc le programme ne fait pas d'erreurs.

je code avec vs2005pro en projet win32.

std::ifstream fichier( "c:\\mon log temp.txt" );
std::ifstream fichiertemp("c:\\mon log exclus");
if ( fichier && fichiertemp) // ce test échoue si le fichier n'est pas ouvert
                {
                    std::string lignetemp;
                    std::string ligne;
                    // cette boucle s'arrête dès qu'une erreur de lecture survient
                    while ( std::getline( fichier, ligne ) )
                    {
                        while (std::getline(fichiertemp,lignetemp))
                        {
                            if(ligne==lignetemp)
                            {
                              ...
                            }
                        }
                    }
                }

alors si quelqu'un peut m'aider, je l'en remercie vivement.

merci a vous et bonne continuation.

2 réponses

pepsidrinker Messages postés 151 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 15 avril 2009
29 déc. 2006 à 17:48
Si j'ai bien compris, ton probleme est tout a fait normal, car, arrivé à ta 2ieme comparaison, le 'curseur' du fichier 2 est deja a la fin du fichier (EOF), et donc, ton programme veut faire un GETLINE sur une fin de fichier...
Pour evitter se probleme, tu doit , a chaque comparaison complete du fichier 2 , remettre le curseur du fichier 2 à la premiere ligne...
regarder les methode du genre 'seek' ou kkchose du genre pour remttre le pointeur à la premiere BYTE du fichier.

Pepsidrinker
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 déc. 2006 à 18:28
C'est pour Windows ces machins ???
Sérieux fais le en VB, tu l'auras en 3 clics avec les mêmes perfs.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous