Ouvrir fichier c++

Résolu/Fermé
k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014 - 2 avril 2010 à 02:46
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 4 avril 2010 à 11:06
Bonjour voila mon probleme jai reussis a ouvrir un fichier cependant je crois que lorsque jutilise le fichier pour savoir le nombre de ligne et apres pour faire autre chose ca marche pas voila mon code

int nbMots ( ifstream & f) {

int lines = 0;
while ( f.ignore( numeric_limits<int>::max(), '\n' ) )
{
++lines;
}

return lines;
}

int main(){

ifstream fichier( "lire.txt",ios::in );


cout<<nbMots(fichier);


if(fichier) // si l'ouverture a réussi il ne va aps rentrer dans le if pourquoi
{


}

dapres moi il ne rentre pas dans le if pcq il ne lit pas le fichier mais pour tant si jenleve cout<<nbMots(fichier); il rentredans le if pouvez vous maider


merci

A voir également:

3 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
2 avril 2010 à 08:16
je pense que c'est normal, ta fonction lit le fichier en entier, le pointeur est donc à la fin du fichier, c'est pour ça qu'on ne rentre pas dans le if. Il faut rembobiner le fichier avant.
regarde là https://en.cppreference.com/w/cpp/io/basic_ios/eof le tableau à la fin dit ce que fait "if(fichier)" exactement.
0
k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014 9
3 avril 2010 à 01:26
mais jai pas trop compris quest ce qui fut changer
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
4 avril 2010 à 11:06
à chaque fois que tu fait f.ignore( numeric_limits<int>::max(), '\n' ) tu as quelque chose de changer, sinon tu aurais une boucle infini. D'accord ?
quand tu as un fichier, tu as une espèce de pointeur qui indique la position courante dans le fichier. Dans le lien que je t'ai donner, regarde les méthodes get() et seekg().
0