Problème de lecture de fichiers [Résolu]

Signaler
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
-
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
-
bonjour,
je veux afficher les noms des fichiers et sous chaque nom de fichier afficher ses lignes;
ce code n'arrive pas à afficher le contenu des fichiers;

#include <dirent.h>
#include <string>
#include <fstream>
#include 

bool isValid(const std::string& path)
{
  return !path.empty() && path != "." && path != "..";
}

int main()
{
 std::string ligne;
 static const std::string folder = "abc";
   DIR* rep = opendir(folder.c_str());
  if (rep)
  {  struct dirent* lecture;

  while ((lecture = readdir(rep)))
{
  if (!isValid(lecture->d_name))
continue;

  std::cout << "\t\t" + folder + "/" + lecture->d_name <<std::endl;
  std::string filename = lecture->d_name;
  std::ifstream text(filename.c_str());
  if (!text)
    std::cerr << "Unable to read the file" << std::endl;


  while (std::getline(text ,ligne))

 std::cout << ligne << std::endl;

 }
   closedir(rep);

  }
 system("pause");
 return (0);
}

le résultat obtenu c'est:
abc/doc1.txt
unable to read the file
abc/doc2.txt
unable to read the file
abc/doc3.txt
unable to read the file

pourquoi ce type d'erreurs si le dossier "abc" contient vraiment ces fichiers???
j'espère que vous pouvez m'aider à corriger ce type d'erreur.

3 réponses

Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
109
Oups, j'ai été un peu vite (Raaa on peut toujours pas éditer ses propres posts !!!)
std::string filename = folder + "/" + lecture->d_name;


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
3813
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
12 juin 2020
109
Parce que tu es dans le mauvais dossier.

Tu essaies d'ouvrire doc1.txt dans le dossier ., au lieu d'être dans le dossier abc.

La solution est d'ouvrir le fichier abc/doc1.txt au lieu de doc1.txt.

Ex:
std::string filename = rep + lecture->d_name;


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015

merci merci merci et 1000 merci,
franchement je connais pas ce truc, donc si je reste des heures et des heures j'arriverai pas à trouver la faute.