IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Probl�me avec std::string


Sujet :

C++

  1. #1
    Membre confirm� Avatar de Laughing Man
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 148
    Par d�faut Probl�me avec std::string
    Salut � tous.

    J'ai donc un petit soucis de gestion avec des objets de type string.

    Au d�part, je lis un fichier (ifstream) gr�ce � la m�thode getline().
    Le fichier est compos� de deux ou trois lignes ( d�pend du fichier ).
    Ensuite, je r��cris la ligne avec un simple << (dans un ofstream).
    Le probl�me, c'est que j'arrive pas � me "d�faire" des end of line.

    Pour clarifier la chose, voil�:
    - exemple de fichier d'entr�e :
    - mon code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [...]
    while(getline(fichier_entree,ligne2))
    			{
                          		fichier_sortie << ligne2 << separateur;
    			}
    			fichier_sortie << endl;
    [...]
    - ce que j'obtient :
    En fait j'arrive pas � mettre les donn�es du fichier de sortie sur une seule ligne...
    Toute suggestion est la bienvenue...

  2. #2
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Tu as ouvert le fichier en mode binaire ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  3. #3
    Membre confirm� Avatar de Laughing Man
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 148
    Par d�faut
    oui g ouvert le fichier de sortie en binaire.
    Il faut aussi ouvrir celui d'entr�e en binaire?

  4. #4
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par d�faut
    je pense pas...

    Une question toute b�te, quel est le contenu de separateur?

  5. #5
    Membre confirm� Avatar de Laughing Man
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 148
    Par d�faut
    Il contient '\t' et le probl�me n'est pas cens� venir de l�, j'ai d�j� �cris des fichiers de cette mani�re. Mais l� le regroupement de lignes, sa m'�chappe.
    Si je pouvais �viter de taper dans des FILE* et de traiter des char*:p

  6. #6
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par d�faut
    Sous linux, que tu ouvres les fichiers en binaire ou pas, �a change rien normalement ^^

    Franchement le seul probl�me que je voie et qui ne causerait pas forc�ment une erreur, c'est si les fichiers que t'ouvre ont �t� �dit�s sur Windows.

    A tout hasard, essaie (pour d�bugger):
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    while(getline(fichier_entree,ligne2))
    			{
                          		fichier_sortie << ligne2 << "--" << separateur << " -- longueur: " << ligne2.length() << " -- ";
    			}
    			fichier_sortie << endl;
    Comme �a on voit pr�cis�ment o� s'est faite la coupure, et si il n'y a pas de \r cach�s dans ton fichier_entree.

  7. #7
    Membre confirm� Avatar de Laughing Man
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 148
    Par d�faut
    J'avais pens� � �a, mais j'ai pas du g�rer correctement quand j'ai essay� de r�soudre des probl�mes avec d'�ventuels '\r'

    Voil� ce que j'obtiens avec ta commande:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    0.0000000--	 -- longueur: 9 -- 
    -230--	 -- longueur: 5 -- 
    13--	 -- longueur: 3 --
    Il semble bien qu'il y ait un soucis:p

  8. #8
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par d�faut
    D'apr�s ce que je vois, ta deuxi�me ligne et ta troisi�me font un caract�re de trop.

    A crois qu'il y a un '\r' au d�but de chacune

    Essaie �a:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    while(getline(fichier_entree,ligne2))
    			{
                          		fichier_sortie << ligne2[0] << ligne2[0] << ligne2[0]  << ligne2 << separateur;
    			}
    			fichier_sortie << endl;
    Si tu vois des tonnes de saut de lignes, alors c'est gagn�!

  9. #9
    Membre confirm� Avatar de Laughing Man
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 148
    Par d�faut
    bon ba probl�me 'presque regl�'. C'est bien �a en effet :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    0000.0000000	
     
     
     
    -230	
     
     
     
    13
    Le truc, c'est que moi je cherchait le '\r' en fin de cha�ne.
    Etant donn� que le fichier d'entr�e est �cris par une m�thode � peu pr�s similaire, est-ce qu'il vaut mieu virer les '\r' quand je les �cris ou quand je les lit?

  10. #10
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    N'ouvre pas en binaire
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  11. #11
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par d�faut
    Sous linux, autant ne pas en mettre du tout. Apr�s, si tu veux utiliser les m�mes fichiers sous Windows, et que tu les lis en binaire, ( et que tu �cris en binaire), il n'y aura aucun probl�me.

  12. #12
    Membre confirm� Avatar de Laughing Man
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 148
    Par d�faut
    Et �a r�soudrait le probl�me? J'en doute �tant donn� que j'avais pas essayer le mode binaire avant de constater le probl�me.

  13. #13
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par d�faut
    Citation Envoy� par Luc Hermitte Voir le message
    N'ouvre pas en binaire
    Sous linux, malheureusement, m�me en normal les \r sont l�

  14. #14
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par d�faut
    Tu �cris tes fichiers comment?
    Si c'est sous linux, autant ne pas mettre de \r, et c'est r�gl�. (binaire, pas binaire, ok)

    L'�criture en binaire, c'est dans le cas o� tu es sous Windows, pour �viter de mettre des \r dans le fichier sortie.

    Si c'est que sous windows, cependant, tu peux �crire et ouvrir en pas binaire. Mais si ton code doit �tre portable (marche sous linux ET windows), alors il suffit d'ouvrir en normal et de sortir en binaire.

    Enfin le plus simple c'est que tu pr�cises dans quelle situation tu es (avec quoi tu fais tes fichiers par exemple)

  15. #15
    Membre confirm� Avatar de Laughing Man
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 148
    Par d�faut
    Je bosse sous linux, mais les gens � qui je destine mon code vont dertainement bosser sous 'cro$oft'
    Donc il me faudrait une solution portable.

  16. #16
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par d�faut
    Et tes fichiers sont fais comment? C'est eux qui les �ditent, ou c'est le programme qui les fait ? Ou via un �diteur Linux/Windows?

  17. #17
    Membre confirm� Avatar de Laughing Man
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 148
    Par d�faut
    Excuse-moi pour cet oubli.
    En fait mon appli utilise des fichiers textes correts (il n'y a pas l'air d'y avoir de \r ou autres).
    Ensuite j'�cris d'autres fichiers avec mon appli.
    Dans le cadre de mon probl�me, je lis un fichier que l'appli a �crit � partir d'un fichier texte.
    (c'est clair ce que je dis l�....j'ai un doute?)

  18. #18
    Membre confirm� Avatar de Laughing Man
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    148
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 148
    Par d�faut
    J'ai regl� mon soucis, mais c'est du "bricolage"

    J'ai ajout� :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    ligne2 = ligne2.substr(1,ligne2.size()-1);
    Encore merci pour ton aide coyotte, je vais essayer de plutot virer les '\r' � l'�criture pour voir.

  19. #19
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    �ge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par d�faut
    Attention, car sur ta premi�re ligne, tu n'avais de \r.
    Donc �a risque de donner un caract�re en moins (pour cette ligne).

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Probl�me avec std::string
    Par Gobelins dans le forum D�buter
    R�ponses: 8
    Dernier message: 03/01/2011, 08h57
  2. probl�me avec std::string
    Par haraelendil dans le forum Langage
    R�ponses: 10
    Dernier message: 25/06/2010, 18h56
  3. probl�me avec std::string:find()
    Par Spidyy dans le forum SL & STL
    R�ponses: 8
    Dernier message: 03/09/2009, 01h25
  4. Sale probl�me avec les strings et les fichiers
    Par acieroid dans le forum C++
    R�ponses: 18
    Dernier message: 26/04/2006, 09h47
  5. Probl�me avec std::Vector
    Par mister3957 dans le forum SL & STL
    R�ponses: 8
    Dernier message: 16/02/2006, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo