Création
d'entreprise
Posez votre question Signaler

[c++] Cast double -> string [Résolu]

bobi14 68Messages postés 23 février 2007Date d'inscription - Dernière réponse le 25 avril 2007 à 10:43
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.
Lire la suite 

[c++] Cast double -> string »

5 réponses
Réponse
+17
moins plus
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;
}

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/iostream/ios_base/precision.html

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 ostringstream, pour ne pas directement régler la précision de ston std::ostream (ce qui inclue en particulier std::cout, std::cerr, les std::ofstream et les std::ostringstream)

Bonne chance
Ajouter un commentaire
Réponse
+1
moins plus
Salut,

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

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

bobi14- 25 avril 2007 à 09:43
Merci pour ta réponse aussi rapide.

Est-ce que ça marche si je fais:

string variable=(string)variable_en_double;
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
Merci bien pour vos réponses et surtout "mamiemando" pour ton code super bien détailé...
Ajouter un commentaire
Ce document intitulé « [c++] Cast double -> string » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?