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

SL & STL C++ Discussion :

convertir std::string en float


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Par défaut convertir std::string en float
    Bonjour, j'ai une fonction qui retroune une chaine après avoir lu dans un fichier XML. En fonctions des cas, cette chaine peut être utilisée telle quelle ou parfois, elle doit etre utiliser en tant que float.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    std::string str = "1,5";
    float f = str;
    il apparait donc le code d'erreur impossible de convertir une chaine en float, avez vous une solution??
    merci

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    tu devrais jetter un coup d'oeil dans la : Comment convertir une string en un objet de n'importe quel type ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par radicalrider
    Bonjour, j'ai une fonction qui retroune une chaine après avoir lu dans un fichier XML. En fonctions des cas, cette chaine peut être utilisée telle quelle ou parfois, elle doit etre utiliser en tant que float.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    std::string str = "1,5";
    float f = str;
    il apparait donc le code d'erreur impossible de convertir une chaine en float, avez vous une solution??
    merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float f=atof(str.c_str());
    non?

  4. #4
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Citation Envoyé par Luc Raymond
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float f=atof(str.c_str());
    non?
    ça c'est du C... de plus, sauf erreur de ma part, atof est obsolète, non ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Swoög
    ça c'est du C... de plus, sauf erreur de ma part, atof est obsolète, non ?
    cela reviendrait au même de dire que le language C est obsolete! ATOF est encore valide dans le standard ansi-c.

    On peut arriver à l'équivalent avec un procédé iostream, mais il n'y pas d'obligation de l'utiliser. Je n'offrais qu'une alternative simple.

    J'utilise souvent le printf au lieu du cout, je ne mérite pas le coup de fouet pour autant!

  6. #6
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    ce que je voulais dire, c'est qu'il me semblait que même en C les fonction *toa ou ato* étaient passées obsolètes et que d'autres fonctions les remplaçaient...

    de plus, si tu fait du C++, alors si tu mérites les coups de fouet
    C++ et C sont des langages différents, avec des optiques différentes...

    Si des librairies existent en C++ alors utiliser leur version C est un non-sens, et surtout quand on parle de la SL... rien n'est pire qu'un code où se mêle C et C++ ça aide pas à la lecture, et ça relève du non suivi total des règles de coding...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Par défaut Boost
    Une solution élégante mais pas forcément facile est d'utiliser la libraire Boost.LexicalCast (attention aux exceptions) :

    #include <boost/lexical_cast.hpp>
    #include <iostream>
    #include <string>
    int main(int argc, char* argv[])
    {

    std::string s="12.2";
    float f = boost::lexical_cast<float>(s);
    std::cout << "f = " << f << std::endl;
    }

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Swoög
    ce que je voulais dire, c'est qu'il me semblait que même en C les fonction *toa ou ato* étaient passées obsolètes et que d'autres fonctions les remplaçaient...

    de plus, si tu fait du C++, alors si tu mérites les coups de fouet
    C++ et C sont des langages différents, avec des optiques différentes...

    Si des librairies existent en C++ alors utiliser leur version C est un non-sens, et surtout quand on parle de la SL... rien n'est pire qu'un code où se mêle C et C++ ça aide pas à la lecture, et ça relève du non suivi total des règles de coding...
    citation ->

    The C++ standard library incorporates the C standard library with some small modifications to make it work better with the C++ language. Another large part of the C++ library is based on the Standard Template Library (STL).
    le standard C++ est consitué DE LA LIBRARIE C + la STL + iostream.
    j'avoue qu'il y a plusieur solution au problème identifié, mais ma réponse fait quand même partie du standard.


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

Discussions similaires

  1. [C#] Comment convertir une String en float ?
    Par DestinyWar45 dans le forum C#
    Réponses: 7
    Dernier message: 08/10/2010, 04h19
  2. [C#] Convertir un string en float
    Par todier dans le forum C#
    Réponses: 3
    Dernier message: 14/05/2007, 18h13
  3. convertir un string en float avec un format
    Par kisscool62 dans le forum C++/CLI
    Réponses: 2
    Dernier message: 04/12/2006, 14h13
  4. convertir un string en float
    Par jayjay.f dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 17/11/2006, 18h24
  5. Convertir un String en Float
    Par alex75 dans le forum Langage
    Réponses: 3
    Dernier message: 15/06/2006, 19h58

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