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

Langage C++ Discussion :

conversions successives avec stringstream


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Par défaut conversions successives avec stringstream
    Bonjour,
    j'ai besoin de convertir des string en float à plusieurs reprises. Pour tester, j'ai écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    std::string str_t("37.2"), str_h("14.1");
        float tp1, tp2;
        std::stringstream ss;
        ss.str(str_t);
        cout << "ss = " << ss.str() << endl;
        ss >> tp1;
        cout << "tp1 = " << tp1 << endl;
     
        ss.str(str_h);
        cout << "ss = " << ss.str() << endl;
        ss >> tp2;
        cout << "tp2 = " << tp2 << endl;
    et la réponse est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ss = 37.2
    tp1 = 37.2
    ss = 14.1
    tp2 = 1.95639e-38
    La seconde fois, ss est correctement initialisé mais la conversion foire systématiquement que je le flush, l'efface avec ss.str("");
    Entre deux initialisation du flus, y a t'il une manip spéciale pour bénéficier d'une conversion correcte ?

    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Après avoir extrait le 1er nombre, le stream s'est mis dans l'état end of file (et peut être d'autres défauts), il faut appeler ss.clear(); pour les effacer. Mais pour convertir, il est plus simple de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	tp1 = std::stof( str_t );
    	tp2 = std::stof( str_h );

  3. #3
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 289
    Par défaut
    Merci. Ca fonctionne très bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OpenOffice] Conversion pdf avec OpenOffice
    Par Julioun dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 28/07/2009, 08h48
  2. Transformée XSL successive avec Javascript
    Par softkiller dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 21/07/2009, 14h23
  3. Soustractions successives avec prix le plus faible
    Par DJPi dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 08/01/2009, 09h42
  4. Conversion MDE avec Access 2000
    Par zoukou dans le forum Access
    Réponses: 5
    Dernier message: 12/03/2007, 14h57
  5. Conversion incorrecte avec atof ou strtod
    Par sber74 dans le forum C
    Réponses: 16
    Dernier message: 15/03/2006, 20h32

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