C++ STL fichier en argument char * en string
Résolu
velderama
Messages postés
199
Date d'inscription
Statut
Membre
Dernière intervention
-
velderama Messages postés 199 Date d'inscription Statut Membre Dernière intervention -
velderama Messages postés 199 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Comment transformé un fichier lue en parametre en un string?
J'aurai besoin d'utilisé : istream_iterator<string>(file) iterateur predefini de la stl mais qui ne connait pas de type char *
int main(int argc, char *argv[1])
{
// Ouverture du bon fichier
ifstream file;
file.open(argv[1],ios::in);
.....
for_each( istream_iterator<string>(file), istream_iterator<string>(),....)
Merci
Comment transformé un fichier lue en parametre en un string?
J'aurai besoin d'utilisé : istream_iterator<string>(file) iterateur predefini de la stl mais qui ne connait pas de type char *
int main(int argc, char *argv[1])
{
// Ouverture du bon fichier
ifstream file;
file.open(argv[1],ios::in);
.....
for_each( istream_iterator<string>(file), istream_iterator<string>(),....)
Merci
A voir également:
- C++ STL fichier en argument char * en string
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
4 réponses
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
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.