[c++] Cast double -> string

Résolu
bobi14 Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -  
 codeurfou -
Bonjour,

Je souhaiterai savoir s'il est possible de caster un double en string.
Si oui est-ce que les chiffres aprés la virgule seront pris en compte?


Merci d'avance pour vos réponses.
A voir également:

4 réponses

mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
La solution C++ c'est de passer par un ostringstream.

#include <iostream>
#include <sstream>

int main(){
    double x = 1.23456789;
    std::string s;
    {
        std::ostringstream oss;
        oss << x;
        s = oss.str();
    }
    std::cout << "x = " << x << " s = " << s << std::endl;
    return 0;
}


Ce qui donne :

(mando@aldur) (~) $ g++ -W -Wall plop.cpp
(mando@aldur) (~) $ ./a.out
x = 1.23457 s = 1.23457


Tu peux éventuellement régler le nombre de décimales qui vont apparaître à priori le nombre de décimales est réglable sur oss
http://www.cplusplus.com/reference/ios/ios_base/precision/

Sinon il reste les traditionnels sprintf du C, qui passent par un buffer.

#include <iostream>
extern "C"{
    #include <stdio.h>
}

int main(){
    double x = 1.23456789;
    std::string s;
    char buffer[100];
    sprintf(buffer,"%.9lf",x);
    s = buffer;
    std::cout << "x = " << x << " s = " << s << std::endl;
    return 0;
}


donne à l'éxecution :

(mando@aldur) (~) $ g++ -W -Wall plop.cpp
(mando@aldur) (~) $ ./a.out
x = 1.23457 s = 1.234567890


La vraie question, c'est as-tu besoin de passer par un buffer ou un
std::ostringstream
, pour ne pas directement régler la précision de ton
std::ostream
(ce qui inclue en particulier
std::cout
,
std::cerr
, les
std::ofstream
et les
std::ostringstream
).

Bonne chance
20
codeurfou
 
Merci
0
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Salut,

Oui c'est tout à fait possible avec par exemple la fonction sprintf (oui j'adore cette fonction).

sprintf(ton_string,"%f",ton_double);

1
bobi14 Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   8
 
Merci pour ta réponse aussi rapide.

Est-ce que ça marche si je fais:

string variable=(string)variable_en_double;
0
Stupeflip Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   94
 
Et bah mamiemando t'es un fou du C++ toi ^^

Sinon
string variable=(string)variable_en_double;
ne devrait pas marcher je pense pas qu'on puisse caster un double en char* par exemple.
0
bobi14 Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   8
 
Merci bien pour vos réponses et surtout "mamiemando" pour ton code super bien détailé...
0