Lire contenu de plusieurs fichiers en même temps
Résolu/Fermé
parabole1
Messages postés
3
Date d'inscription
jeudi 26 novembre 2015
Statut
Membre
Dernière intervention
7 janvier 2016
-
Modifié par parabole1 le 26/11/2015 à 12:53
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 1 déc. 2015 à 19:22
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 1 déc. 2015 à 19:22
A voir également:
- Lire contenu de plusieurs fichiers en même temps
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Renommer plusieurs fichiers en même temps - Guide
- Lire fichier epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Blocage agriculteur carte en temps réel - Guide
1 réponse
mamiemando
Messages postés
33077
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
18 avril 2024
7 748
Modifié par mamiemando le 1/12/2015 à 19:20
Modifié par mamiemando le 1/12/2015 à 19:20
Ça me paraît un peu compliqué. Je ferais d'abord une boucle qui demande les noms de fichiers, puis ensuite qui les affiche. Je n'ai pas compris ce qu'était set_id.
Par ailleurs je ne sais pas trop ce que tu entends par afficher le contenu en même temps (car j'imagine que tu vas en pratique les afficher les uns après les autres) ?
Compilation :
Exécution :
Bonne chance
Par ailleurs je ne sais pas trop ce que tu entends par afficher le contenu en même temps (car j'imagine que tu vas en pratique les afficher les uns après les autres) ?
#include <fstream> #include <iostream> #include <list> #include <ostream> #include <string> std::string prompt_filename(std::size_t i, std::size_t n) { std::string filename; do { std::cout << "Filename (" << i << '/' << n << ") (6 chars max)? "; std::cin >> filename; } while (filename.size() > 6 || filename.size() == 0); return filename; } bool print_file(std::ostream & os, const std::string & filename) { bool ret = false; std::ifstream ifs(filename); if (ifs) { std::string line; while (std::getline(ifs, line)) { os << line << std::endl; } ifs.close(); ret = true; } return ret; } int main() { std::size_t num_files; std::list<std::string> filenames; do { std::cout << "Number of files [1-4]?"; std::cin >> num_files; } while(num_files == 0 || num_files > 4); for (std::size_t i = 0; i < num_files; ++i) { filenames.push_back(prompt_filename(i, num_files)); } for (const std::string & filename : filenames) { bool success = print_file(std::cout, filename); if (!success) { std::cerr << "Can't print [" << filename << ']' << std::endl; } } return 0; }
Compilation :
g++ -std=c++11 -W -Wall toto.cpp -o toto
Exécution :
./toto
Bonne chance
1 déc. 2015 à 07:47
1 déc. 2015 à 19:22
En fait j'ai ajouté ça après coup pour coller à ton énoncé mais comme tu l'as compris le programme marcherait sans ces tests pour des strings de longueurs à priori quelconques et je n'ai pas testé derrière.
Pour être homogène avec prompt_filename, on aurait également pu créer prompt_num_files.
Bonne continuation !