Prise en compte des espaces

Signaler
Messages postés
2
Date d'inscription
lundi 26 avril 2010
Statut
Membre
Dernière intervention
27 avril 2010
-
Messages postés
286
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
22 avril 2012
-
Bonjour à tous.

J'ai un petit programme qui scanne un fichier texte et crée un nouveau fichier identique au premier sauf certains caractères remplacés.

Ca ressemble à ça

#include <fstream>
vector v;
string f1,f2;
f1=...
f2=...
ifstream fi(f1.c_str(),ios::in);
ofstream fo(f2.c_str(),ios::out);
while (fi) {

fi>>c;
if(c==...) {fo<<...}
else {fo<<...}

}

fi.close();
fo.close();


Mon problème : dans le nouveau fichier, tous les espaces ont disparu ! Comment faire ?

Merci à tous pour vos réponses.

3 réponses

Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
Lorsque tu fais "fi >> c" tu récupère les mots sans les espaces.
Pour tout récupérer, regarde du côté de la fonction std::getline (qui récupère une ligne entière plutôt qu'un mot).
Je pense que "std::getline(fi, c);" devrait faire l'affaire.

Autre petit détail: Évite les using namespace std ! Voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace

_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
Messages postés
2
Date d'inscription
lundi 26 avril 2010
Statut
Membre
Dernière intervention
27 avril 2010

Désolé si j'ai omis de préciser, mais "c" est un char, pas un mot entier.

Il n'y a pas une astuce pour récupérer tous les caractères y compris les espaces ?
Messages postés
286
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
22 avril 2012
2
Si, comme l'a indiqué CptPingu: std::istream::getline