Ouvrir fichier c++

Résolu
k-23 Messages postés 290 Statut Membre -  
Char Snipeur Messages postés 10112 Statut Contributeur -
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 10112 Statut Contributeur 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 290 Statut Membre 9
 
mais jai pas trop compris quest ce qui fut changer
0
Char Snipeur Messages postés 10112 Statut Contributeur 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