Problème de lecture de fichiers

Résolu
cs_mervat Messages postés 90 Date d'inscription samedi 5 juin 2010 Statut Membre Dernière intervention 6 mars 2015 - 8 oct. 2010 à 10:22
cs_mervat Messages postés 90 Date d'inscription samedi 5 juin 2010 Statut Membre Dernière intervention 6 mars 2015 - 8 oct. 2010 à 11:12
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

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
8 oct. 2010 à 10:58
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
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
8 oct. 2010 à 10:57
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
0
cs_mervat Messages postés 90 Date d'inscription samedi 5 juin 2010 Statut Membre Dernière intervention 6 mars 2015
8 oct. 2010 à 11:12
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.
0
Rejoignez-nous