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 :

str To Double ?


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut str To Double ?
    Bonjour tous,

    J'ai un probleme de convertion de string a double, j'ai essayé pas mal de chose mais je ne suis pas arrivé à resoudre ce probleme simple:

    voila une partie de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    string A; //je declare un string
    ifstream dataBase(mon_fichier.c_str(), ios::in); //je lis un fichieret met dans database
    dataBase >> command; //je mets un mot dans la variable command
    A = command;
    cout << A << endl;
    Si j'affiche cela (avec le code entier) j'aurais quelque chose comme ceci si le string command vaut 1.5

    c'est tres bien mais le probleme c'est que je ne veux pas que ce 1.5 soit un string mais un double, j'ai donc essayé cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    double A; //je declare un double
    ifstream dataBase(mon_fichier.c_str(), ios::in); //je lis un fichieret met dans database
    dataBase >> command; //je mets un mot dans la variable command
    A = strToDouble(command);
    cout << A << endl;
    mais le probleme et que j'ai le message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strToDouble was not declared in thise scope

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Tu y es presque, cf. cette entrée de la FAQ.

    MAT.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci MAT, en fait j'avais deja regardé la FAQ avant de poster mais je n'y suis pas arrivé avec SSTREAM c''est pour cela que j'ai essayé strToDouble car apparemment ca fait la meme chose...

    ==> Je n'y suis pas arrivé avec sstream surement a cause de mon cas à moi qui bien qu'etant facile ne l'ai pas autant que celui de la FAQ

    ==> Si je fais ceci, c'est bon? (je peux pas tester seulement demain):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <sstream>
    double A, B; //je declare deux double
    istringstream iss( "command" );
    ifstream dataBase(mon_fichier.c_str(), ios::in); //je lis un fichieret met dans database
    dataBase >> command; //je mets un mot dans la variable command
    iss >> A; //comme je sais que c'est un chiffre alors je le converti
    dataBase >> command; //je mets un autre mot dans la variable command
    iss >> B; //comme je sais que c'est un chiffre alors je le converti
     
    cout << A << endl;
    cout << B << endl;
    en faisant ceci ca doit marcher? (A et B seront différents?)





    int nombre;
    iss >> nombre; // nombre vaut 10
    }

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Je ne sais pas où tu as vu parler de strToDouble mais ça n'existe pas.

    En fait les deux différences entre le code de la FAQ et ce que tu cherches à faire sont :
    . il ne s'agit pas d'un int mais d'un double
    . tu ne lis pas à partir d'une chaîne de caractères mais d'un fichier

    Du coup il te suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::ifstream dataBase(mon_fichier.c_str(), ios::in);
    double a, b;
    dataBase >> a >> b;
    Bon idéalement il faudrait aussi vérifier que le fichier est bien ouvert, donc avec :
    MAT.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci mat mais je n'ai pas compris dans ton exemple à quelle moment à lieu la convertion dans ton exemple....

    qu'es ce qu'il n'allait pas dans le mien?

    remarque: je suis obligé de faire quelque chose comme ceci:
    car mon programme doit lire mot par mot le fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dataBase >> command; //je mets un mot dans la variable command
     
    //ici je veux convertir command en double et stoquer dans une variable
     
    dataBase >> command; //je mets un autre mot dans la variable command
     
    //ici je veux convertir command en double et stoquer dans une autre variable

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Citation Envoyé par 21did21 Voir le message
    je n'ai pas compris dans ton exemple à quelle moment à lieu la convertion dans ton exemple....
    La conversion est faite implicitement en lisant un double à partir du fichier.

    Citation Envoyé par 21did21 Voir le message
    mon programme doit lire mot par mot le fichier
    Si tu lis des mots sous forme de chaînes de caractères uniquement pour les convertir en nombre juste après, ça n'a pas tellement d'intérêt.
    Mais bon si c'est vraiment ce que tu veux faire alors pour faire la conversion tu prends le code de la FAQ dont j'ai donné le lien et tu remplaces :
    . int par double
    . la chaîne en dur "10" par ta chaîne command

    Et voilà !
    (en français dans le texte)

    MAT.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    La conversion est faite implicitement en lisant un double à partir du fichier.
    merci mat, mon probleme est reglé à present, je n'avais pas compris que ca fonctionné comme cela

    A+ et merci

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

Discussions similaires

  1. division de "double" par "0"
    Par ickis dans le forum C
    Réponses: 14
    Dernier message: 31/08/2003, 19h09
  2. [Dev-Pascal] Le compilateur renseigne la fonction Str comme illégale
    Par goto dans le forum Autres IDE
    Réponses: 3
    Dernier message: 16/08/2003, 16h22
  3. abs pour un long double
    Par barthelv dans le forum C
    Réponses: 2
    Dernier message: 23/07/2003, 16h16
  4. String -> long double (_strlold ?)
    Par haypo dans le forum C
    Réponses: 7
    Dernier message: 25/07/2002, 20h22
  5. Réponses: 3
    Dernier message: 12/06/2002, 21h15

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