Traiter plusieurs fichiers dans un dossier [Résolu]

Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
- - Dernière réponse : cs_mervat
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
- 5 févr. 2011 à 21:53
bonjour,
je veux faire les mêmes traitements pour chaque fichier d'un dossier,
je vais donner un exemple pour que vous me comprenez plus:
supposons que j'ai un dossier "44001" comprenant 3 fichiers textes in1, in2 et in3; je veux faire les mêmes traitements pour in1, in2 et in3 et avoir en sortie 3 fichiers différents out1, out2 et out3.
est ce possible, si oui quelles corrections pourrais-je faire pour le code suivant pour satisfaire mes besoins.

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

bool isValid(const std::string& path)
{
  return !path.empty() && path != "." && path != "..";
}
int main()
{static const std::string folder = "44001";
std::ofstream ofs ("out.txt");
DIR* rep = opendir(folder.c_str());
if (rep)
  { struct dirent* lecture;

while ((lecture = readdir(rep)))
 {
  if (!isValid(lecture->d_name))
continue;
        
 ofs << "traitement" << std::endl; //ou n&#8217;importe quel traitement ou instruction
 }

closedir(rep);
  }
 return 0;
}

j'espère avoir votre aide le plutôt possible.
merci.
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
4
3
Merci
Pour en faire trois il faut déclarer 3 sorties :

std::ofstream ofs1 ("out1.txt");
std::ofstream ofs2 ("out2.txt");
std::ofstream ofs3 ("out3.txt");

puis

ofs1 << "traitement" << std::endl;
ofs2 << "traitement" << std::endl;
ofs3 << "traitement" << std::endl;

dans la boucle.

Après, si c'est pour beaucoup de fichiers, autant faire ceci :

for (int i = 1; i <= nombreFichiers; i++) //tout au début du main
{
 

et là tu remet ton code sauf que pour la déclaration du fichier tu mets :

    char *nbcs = new char;
    itoa (i, nbcs, 10);

    string chemin = "out";
    chemin += nbcs;
    chemin += ".txt";
    std::ofstream ofs (chemin.c_str());


ça va te générer
"out1.txt"
"out2.txt"
"out3.txt"
...
jusqu'à
"out nombreFichiers .txt"

puis
le traitement


et enfin :

} // fin de la boucle juste avant return 0;




Pop70

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de pop70
Messages postés
90
Date d'inscription
samedi 5 juin 2010
Statut
Membre
Dernière intervention
6 mars 2015
0
Merci
je vous remercie pour l'aide, et surtout pour le détail, une réponse bien détaillée qui m'a tellement aidé.
merci.
Commenter la réponse de cs_mervat