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 -
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
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:
- Ouvrir fichier c++
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Ouvrir fichier .dat - Guide
- Comment ouvrir un fichier docx ? - Guide
- Comment ouvrir un fichier 7z - Guide
3 réponses
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.
regarde là https://en.cppreference.com/w/cpp/io/basic_ios/eof le tableau à la fin dit ce que fait "if(fichier)" exactement.
à 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().
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().