¿Cómo convierto un doble en una cadena en C++?
Necesito almacenar un doble como una cadena. Sé que puedo usarlo printf
si 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 ).
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);
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>
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_string
es una nueva función de biblioteca introducida en N1803 (r0), N1982 (r1) y N2408 (r2) " Acceso numérico simple ". También existe la stod
función de realizar la operación inversa.
Si desea tener un formato de salida diferente al de "%f"
, utilice los métodos snprintf
o ostringstream
como se ilustra en otras respuestas.