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 :

pb d'utilisation de string::unsetf(ios::skipws)


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 125
    Points : 145
    Points
    145
    Par défaut pb d'utilisation de string::unsetf(ios::skipws)
    Salut, j’ai un petit Pb de compréhension (pour info je compile avec cygwin)

    Je suis dans un programme où je me retrouve avec une ligne,
    qui comprends 3 infos, un Id une Date et une Valeur.
    Il n'y a pas de caractère de séparation je ne peux donc pas utiliser un getline.
    Par contre mes colonnes sont de tailles fixes (10,8,12)
    L'Id est une string que 10 caractères complèté par des espaces.
    Le Pb survient à lecture, par défaut skipws est à 1 donc les espaces ne sont pas pris en compte et la lecture est donc décalé.
    L'utilisation du unsetf semble empirer la lecture.
    Par contre en lisant le flux carac par carac ça marche operator >> (char*c)
    Je ne comprends pas comment le faire proprement pour récupérer la string initial
    La solution suivante marche mais ne me plait pas trop:
    id=string(tab,tab+10);
    st.seekg(10);

    Merci d'avance pour vos précisions et explications
    Cdt.
    Alsk
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    //------------------------------------------//
    //Code initial a tester avec et sans le unsetf  //
    //------------------------------------------//
    string id,date;
    int val;
    char tab[100];
    strstream st(tab,100);
     
    st.fill(' ');
    st.width(10);
    st<<"987654C";// entre l'id sur 10 carac
     
    st.width(8);
    st<<"20061007";// entre une date
     
    st.width(12);
    st.fill('0');
    st<< 1234567<<ends;// entre un chiffre
    cout <<"enter:"<< st.str()<<endl;
     
    //st.unsetf(ios::skipws);
     
    st.fill(' ');
    st.width(10);
    st>>id;
     
    st.width(8);
    st>>date;
     
    st.width(12);
    st.fill('0');
    st>>val;
     
    cout << id <<":"<< date <<":"<< val<< endl;

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Utilises la balise [code], ce sera plus lisible.
    Et pour ton problème, pourquoi ne récupères-tu pas ta ligne dans une string, que tu éclates ensuite en 3 avec la fonction substr ?

  3. #3
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 125
    Points : 145
    Points
    145
    Par défaut
    l exemple est fait avec 3 colonnes mais en realite une ligne est compose de beaucoup plus d'éléments.

    jouer avec substr oblige a connaitre tous les indices et prendre en compte les colonnes précedentes.

    Vous avez le meme pb lorsque vous utilisez le unsetf ?

Discussions similaires

  1. Utilisation de String.format()
    Par Moonwalker dans le forum Langage
    Réponses: 4
    Dernier message: 03/04/2007, 12h17
  2. Utilisation de string
    Par Jiyuu dans le forum VB.NET
    Réponses: 6
    Dernier message: 16/03/2007, 19h10
  3. pbm d'utilisation de string
    Par assif dans le forum C++
    Réponses: 3
    Dernier message: 21/10/2006, 13h42
  4. [C#] ValueMember sans utiliser de string
    Par Jinroh77 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/08/2006, 11h26
  5. Réponses: 7
    Dernier message: 25/11/2005, 17h11

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