Les Allergies
Alimentaires
Posez votre question Signaler

C++ STL fichier en argument char * en string [Résolu]

velderama 197Messages postés 26 février 2008Date d'inscription 11 mai 2011Dernière intervention - Dernière réponse le 10 mars 2008 à 09:58
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
Lire la suite 

C++ STL fichier en argument char * en string »

4 réponses
Réponse
+2
moins plus
Le plus simple c'est d'utiliser un getline qui permet de lire le fichier ligne par ligne
#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
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,

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.
Ajouter un commentaire
Réponse
+0
moins plus
Si si tu as le droit ^^
Ajouter un commentaire
Réponse
+0
moins plus
Merci a tous les 2!
Ajouter un commentaire
Ce document intitulé « c++ STL fichier en argument char * en string » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?