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
- Fichier host - Guide
- Téléchargez cette archive (dossier compressé). en extraire tous les fichiers dans un dossier local. quel fichier contient l’expression trouverpix ? ✓ - Forum Windows
- Fichier iso - Guide
- Argument bash - Astuces et Solutions
4 réponses
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
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
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
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!