IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Probleme de lecture de plusieurs fichiers


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 56
    Par défaut Probleme de lecture de plusieurs fichiers
    Bonjour,

    J'ai besoin d'une aide par rapport à une fonction que je suis en train de créer.

    Je voudrais créer une fonction qui me permettent de lire plusieurs fichiers, en sachant que les fichiers ne sont dans les mêmes directories mais ont le même nom.
    Les paramètre de la fonction sont:
    file_name -> nom des fichiers qui doivent être lu
    current_path -> partie commune du chemin pour les fichiers
    subfolders -> Partie variable du chemin pour les fichiers
    Ces 3 paramètres me permettent de contruire le chemin pour l'ouverture des différents fichiers.

    Mon problème, lors de la compilation de mon code (voir ci-dessous) j'ai une erreur.
    62 C:\Projects\Dev File\test_repertoire.cpp no matching function for call to `std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(std::string&)'

    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
    vector <string> function_path_read_file (string file_name, string current_path, const vector<string> &subfolders)
    {
    string input_file;
    string temp;
     
        for (int i =0 ; i<subfolders.size();i++)
            //Construction de mon chemin pour ouverture du fichier qui doit être lu
            temp=current_path+'/'+subfolders[i].c_str()+'/'+file_name;    
            // le constructeur de ifstream permet d'ouvrir un fichier en lecture    
            ifstream inputfile(temp);
                if ( inputfile ) // ce test échoue si le fichier n'est pas ouvert
                {
                   string ligne; // variable contenant chaque ligne lue
     
                   // cette boucle s'arrête dès qu'une erreur de lecture survient
                   while (getline( inputfile, ligne ) )
                   {
                   // afficher la ligne à l'écran
                   cout << ligne << endl;
                   }
        }
    }
    Merci par avance.

    David

  2. #2
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Tu ne fais jamais de inputfile.close()?

    De plus, c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ifstream inputfile(temp.c_str());
    et non pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ifstream inputfile(temp);

  3. #3
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Citation Envoyé par Trunks Voir le message
    Tu ne fais jamais de inputfile.close()?
    C'est inutile car implicitement exécuté à la sortie de la portée où est défini le flux fichier.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    C'est inutile car implicitement exécuté à la sortie de la portée où est défini le flux fichier.
    Ah?! Tu viens de m'apprendre un truc là !

    C'est pas mentionné dans la référence

  5. #5
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    C'est pas la référence... La classe ifstream comme toute les class de la STL implémente le RAII, donc pas besoin d'appeler la méthode close(), sauf dans cas particuliers (on en a parlé dans un topic récemment).

  6. #6
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Citation Envoyé par Goten Voir le message
    La classe ifstream comme toute les class de la STL implémente le RAII, donc pas besoin d'appeler la méthode close(), sauf dans cas particuliers (on en a parlé dans un topic récemment).
    Merci, je ne le savais pas ! Comme quoi, on en apprend tous les jours

  7. #7
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Ni ce site, ni cppreference ne sont des sites de référence sur le C++ -- ne vous laissez pas abuser.

    dinkumware et roguewave sont en revanche d'excellentes références.

    Ceci dit, sur ce point, j'ai comme l'impression qu'il faut lire entre les lignes dans la norme. En gros, il est suggéré que c'est comme si les basic_*fstream disposaient d'un membre de type basic_filebuf. Et donc là, nous sommes sensés en déduire que la destruction du flux fichier entraine la destruction de son membre, qui elle entraine sa fermeture. Même si dans les faits l'implémentation que l'on utilise ne dispose pas d'un tel membre.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 56
    Par défaut
    Bonjour,

    Personne n'a une idée pour mon problème de boucle for.

    Car j'ai un peu l'impression de tourner en rond, et je ne comprend pas pourquoi ma boucle ne me retourne uniquement la derniere valeur de mon vector.

    Merci

    David

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 56
    Par défaut
    Merci beaucoup mieux.

    Mais j'ai encore un problème au niveau de ma boucle for. Car la boucle ne me retourne que la dernière valeur de mon vector (le vecteur contient 4 lignes).

    David

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de lecture dans un fichier
    Par Bebert71 dans le forum C
    Réponses: 7
    Dernier message: 15/01/2007, 19h28
  2. Probleme de lecture d'un fichier
    Par Jim_Nastiq dans le forum Langage
    Réponses: 10
    Dernier message: 27/06/2006, 09h53
  3. Probleme de lecture d'un fichier avec caractères speciaux
    Par bygui dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 26/06/2006, 09h35
  4. Gros probleme de lecture d'un fichier texte
    Par Draekonyss dans le forum C
    Réponses: 12
    Dernier message: 25/04/2006, 09h25
  5. Probleme de lecture d'un fichier XML
    Par chleuh dans le forum Langage
    Réponses: 8
    Dernier message: 30/08/2005, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo