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 : Sélectionner tout - Visualiser dans une fenêtre à part
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