C++ STL fichier en argument char * en string
Résolu
velderama
Messages postés
203
Statut
Membre
-
velderama Messages postés 203 Statut Membre -
velderama Messages postés 203 Statut Membre -
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.