¿Cómo convierto un doble en una cadena en C++?

Resuelto Bill the Lizard asked hace 15 años • 19 respuestas

Necesito almacenar un doble como una cadena. Sé que puedo usarlo printfsi quisiera mostrarlo, pero solo quiero almacenarlo en una variable de cadena para poder almacenarlo en un mapa más adelante (como el valor , no como la clave ).

Bill the Lizard avatar Dec 02 '08 03:12 Bill the Lizard
Aceptado
// The C way:
char buffer[32];
snprintf(buffer, sizeof(buffer), "%g", myDoubleVar);

// The C++03 way:
std::ostringstream sstream;
sstream << myDoubleVar;
std::string varAsString = sstream.str();

// The C++11 way:
std::string varAsString = std::to_string(myDoubleVar);

// The boost way:
std::string varAsString = boost::lexical_cast<std::string>(myDoubleVar);
Adam Rosenfield avatar Dec 01 '2008 20:12 Adam Rosenfield

La forma de impulso (tm) :

std::string str = boost::lexical_cast<std::string>(dbl);

La forma estándar de C++ :

std::ostringstream strs;
strs << dbl;
std::string str = strs.str();

Nota : No lo olvides#include <sstream>

Johannes Schaub - litb avatar Dec 01 '2008 20:12 Johannes Schaub - litb

La forma estándar de C++ 11 (si no le importa el formato de salida):

#include <string>

auto str = std::to_string(42.5); 

to_stringes una nueva función de biblioteca introducida en N1803 (r0), N1982 (r1) y N2408 (r2) " Acceso numérico simple ". También existe la stodfunción de realizar la operación inversa.

Si desea tener un formato de salida diferente al de "%f", utilice los métodos snprintfo ostringstreamcomo se ilustra en otras respuestas.

kennytm avatar Nov 04 '2011 19:11 kennytm