comportement de ifstream que je ne comprend pas
Bonjour,
mon problème c'est que ifstream fonctionne très bien si on lui indique dirèctement le fichier à ouvrir, mais si on lui indique d'abord un fichier non existant, puis un fichier existant, il l'ouvre mais ne le lit pas.
Voilà le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
//On initialise:
string file_name=""; //le nom du fichier à ouvrir
ifstream file; //le fichier à ouvrir
if(argv[1])
{
file_name=argv[1]; //S'il existe un paramètre, on le donne en nom de fichier à ouvrir
}
while(1)
{
//On tente d'ouvrir le fichier et on vérifie si ça fonctionne
file.open(file_name.c_str());
if(file.is_open())
{
cout<<endl<<"File opened"<<endl<<endl; //On affiche un message qui confirme l'ouverture du fichier et on essaie de lire les lignes.
string line;
while(getline(file, line))
{
cout<<line<<endl;
}
file.close();
break; //On ferme le fichier et on quitte la boucle while
}
//Si le fichier n'a pas pu s'ouvrir, on le ferme puis on demande à l'utilisatrice de retaper le nom du fichier, que l'on mettra dans file_name, puis on recommence la boucle.
else
{
file.close();
cout<<"Fichier introuvable, veuillez entrer un autre nom de fichier: ";
cin>>file_name;
}
} |
Le problème c'est que si on tape dirèctement le nom du fichier en paramètre, tout se passe bien.
Mais si on le rentre par après, le message "File opened" s'affichera, mais pas les lignes.
Merci d'avance à qui me répondra :ccool: