Convierte float a std :: string en C ++

Tengo un valor flotante que debe ponerse en std::string . ¿Cómo convierto de float a string?

 float val = 2.5; std::string my_val = val; // error here 

A menos que esté preocupado por el rendimiento, use cadenas de transmisión :

 std::ostringstream ss; ss << myFloat; std::string s(ss.str()); 

Si está de acuerdo con Boost, lexical_cast <> es una alternativa conveniente:

 std::string s = boost::lexical_cast(myFloat); 

Las alternativas eficientes son, por ejemplo, FastFormat o simplemente las funciones estilo C.

A partir de C ++ 11, la biblioteca estándar de C ++ proporciona la función std::to_string(arg) con varios tipos admitidos para arg .

Puede definir una plantilla que funcionará no solo con dobles, sino también con otros tipos.

 template  string tostr(const T& t) { ostringstream os; os< 

Entonces puedes usarlo para otros tipos.

 double x = 14.4; int y = 21; string sx = tostr(x); string sy = tostr(y); 

Use to_string() . (disponible desde c ++ 11)
ejemplo:

 #include  #include  using namespace std; int main () { string pi = "pi is " + to_string(3.1415926); cout<< "pi = "<< pi << endl; return 0; } 

ejecútelo usted mismo: http://ideone.com/7ejfaU
Estos están disponibles también:

 string to_string (int val); string to_string (long val); string to_string (long long val); string to_string (unsigned val); string to_string (unsigned long val); string to_string (unsigned long long val); string to_string (float val); string to_string (double val); string to_string (long double val); 

Puede usar std :: to_string en C ++ 11

 float val = 2.5; std::string my_val = std::to_string(val); 

Si le preocupa el rendimiento, consulte la biblioteca Boost :: lexical_cast .

Este tutorial ofrece una solución simple pero elegante, que transcribo:

 #include  #include  #include  class BadConversion : public std::runtime_error { public: BadConversion(std::string const& s) : std::runtime_error(s) { } }; inline std::string stringify(double x) { std::ostringstream o; if (!(o << x)) throw BadConversion("stringify(double)"); return o.str(); } ... std::string my_val = stringify(val); 

Si intenta convertir una variable float a cadena, puede encasillarla directamente. (Funciona para mí;)) float my_value = 4.32; String a = (String) my_value; float my_value = 4.32; String a = (String) my_value;