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 :

Comment convertir une variable string en double?


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Comment convertir une variable string en double?
    Bonjour,

    J'ai un petit probleme de conversion sur des variables string, que je preleve dans un fichier texte.
    Je declare ma variable string comme ceci:

    std::string ligne;

    j'effectue une recherche ligne par ligne sur mon fichier en fait, il ya une donnee par ligne...Probleme, c'est qu'il peut s'agir de texte comme numerique.

    Comme je sais lorsque ma donnee est numerique, je veux la convertir en reel,
    j'utilise ceci:

    A = atof ( ligne )

    bien evidemment en ayant prealablement declare A en tant que double et inclus la bibliotheque contenant "atof"

    Mais ca marche pas en fait.

    J'ai cherche sur les tutos mais sans succes
    Je suis completement novice en C++, alors si quelqu'un pouvait m'aider...

    Merci d'avance.

  2. #2
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    essaye ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A = atof(ligne.c_str())

  3. #3
    Membre du Club Avatar de Seandest
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 54
    Points : 67
    Points
    67
    Par défaut
    Bonjour, tu n'as pas d'erreurs mais aucun résultat c'est ça ?
    A vaut combien après l'appel de atof() ?

  4. #4
    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
    :
    http://c.developpez.com/faq/cpp/?pag...NGS_convert_to

    Et pour ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::istringstream(ligne) >> A;
    devrait suffire

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Merci, c'est le forum C++ ici, et tout est dans la FAQ comme l'indique le message précédent.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Antoine_935
    essaye ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A = atof(ligne.c_str())
    Merci antoine,
    ce Code marche tres bien.

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Sauf que c'est pas conseillé, mais alors pas du tout. C'est du C déprécié, donc même si tu faisais du C, tu ne devrais pas l'utiliser. Tu es en C++, utilise les outils du C++ qui te permettront aussi de vérifier la validité de la conversion au besoin - même si tu n'en as pas besoin maintenant, ne prends pas des mauvaises habitudes pour le jour où tu en auras besoin -.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Ouep.
    Voici un tuto paru depuis peu de temps qui explique comment faire des convertions avec Boost: http://miles.developpez.com/tutoriel...onversion/#LII
    Et ca c'est du bon C++ bien secure.

  9. #9
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par zais_ethael
    Voici un tuto paru depuis peu de temps qui explique comment faire des convertions avec Boost: http://miles.developpez.com/tutoriel...onversion/#LII
    Et ca c'est du bon C++ bien secure.
    Je ne peux que plussoyer

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Que peut-il se passer lors de la conversion avec cette methode?

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    On voit dans ces exemples qu'il y a un mécanisme d'erreur lorsque la conversion est impossible, puisque lexical_cast<> lève une exception de type bad_lexical_cast<>, type dérivé de bad_cast<>. La conversion utile des stringstream en interne, la méthode classique utilisée dans ces cas, sauf que tout est encapsulé avec une vérification d'erreur.

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    oui mais j'ai deja 22 variables, et je suis amene a en avoir plus. Avec ce type de conversion(boost), je pense que je suis oblige de stocker les valeurs dans des variables tampons n'est ce pas. Ce qui m'amene au double en fait.
    Par ailleurs, le fichier texte sur lequel je pompe les valeurs est deja ecrit a l'aide du C++, car il s'agit en fait d'un recapitulatif des valeurs pour le fonctionnement d'un big calculateur en c++. Il est donc peu probable sachant que ces donnees ont deja ete utilisees, de detecter des erreurs au sein du fichier...

  13. #13
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Miles
    Sauf que c'est pas conseillé, mais alors pas du tout. C'est du C déprécié, donc même si tu faisais du C, tu ne devrais pas l'utiliser. Tu es en C++, utilise les outils du C++ qui te permettront aussi de vérifier la validité de la conversion au besoin - même si tu n'en as pas besoin maintenant, ne prends pas des mauvaises habitudes pour le jour où tu en auras besoin -.
    Je m'auto-cite, ça répond normalement à ta dernière question.
    Je ne vois pas où tu aurais besoin d'avoir des variables intermédiaires.

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

Discussions similaires

  1. [MySQL] comment convertir une variable php en entier
    Par bourbita.thameur dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 11/03/2009, 10h30
  2. Comment Convertir une Variable
    Par Au2laDeNosReves dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/04/2008, 10h48
  3. Réponses: 2
    Dernier message: 10/04/2007, 12h39
  4. [FAQ]Comment convertir une std::string en AnsiString ?
    Par Invité dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/11/2006, 18h08
  5. Réponses: 6
    Dernier message: 14/02/2004, 14h01

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