Ouvrir fichier c++

Résolu
k-23 Messages postés 252 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
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

3 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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   Statut Membre Dernière intervention   9
 
mais jai pas trop compris quest ce qui fut changer
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
à 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