C++ STL fichier en argument char * en string
Résolu/Fermé
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
-
8 mars 2008 à 15:29
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 - 10 mars 2008 à 09:58
velderama Messages postés 199 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 11 mai 2011 - 10 mars 2008 à 09:58
A voir également:
- C++ STL fichier en argument char * en string
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier host - Guide
- Ouvrir fichier .bin - Guide
4 réponses
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
8 mars 2008 à 16:27
8 mars 2008 à 16:27
Le plus simple c'est d'utiliser un getline qui permet de lire le fichier ligne par ligne
Bonne chance
#include <fstream> #include <iostream> #include <string> int main(int argc,char **argv){ // Contrôler le nombre d'arguments if(argc != 2){ std::cerr << "usage: " << argv[0] << " filename" << std::endl; return 1; } // Ouvrir le fichier std::ifstream ifs(argv[1]); if(!ifs){ std::cerr << "impossible d'ouvrir le fichier " << argv[1] << std::endl; return 2; } // Lire le fichier { std::string line; for(;std::getline(ifs,line);){ std::cout << line << std::endl; } } // Fermer le fichier ifs.close(); return 0; }
Bonne chance
Mahmah
Messages postés
496
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
22 juin 2010
125
8 mars 2008 à 17:27
8 mars 2008 à 17:27
Bonjour,
Si on veut vraiment utiliser for_each on peut faire comme suit:
Mais je dois avouer que j'ai codé le truc juste par curiosité, je préfère la solution de MamieMando.
Quoi ? On a plus le droit de lancer des fleurs maintenant ? ;-)
M.
Si on veut vraiment utiliser for_each on peut faire comme suit:
#include <sstream> #include <string> #include <iostream> #include <fstream> #include <algorithm> void afficher( char &c ) { // c est passé par référence, on pourrait le modifier. std::cout << c; } int main( int argc, char *argv[]) { /* Vérification de l'argument... */ std::ifstream f; f.open( argv[1] ); if ( f.is_open() ) { std::stringstream sstream; std::string s; // lecture du fichier sstream << f.rdbuf(); // fermeture du fichier f.close(); // Récupérer la lecture dans une string s = sstream.str(); // traîtement par boucle std::for_each( s.begin(), s.end(), aff ); getchar(); return 0; } else return 1; }
Mais je dois avouer que j'ai codé le truc juste par curiosité, je préfère la solution de MamieMando.
Quoi ? On a plus le droit de lancer des fleurs maintenant ? ;-)
M.
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
9 mars 2008 à 14:37
9 mars 2008 à 14:37
Si si tu as le droit ^^
velderama
Messages postés
199
Date d'inscription
mardi 26 février 2008
Statut
Membre
Dernière intervention
11 mai 2011
10
10 mars 2008 à 09:58
10 mars 2008 à 09:58
Merci a tous les 2!