在C ++中将float转换为std :: string

我有一个浮点值,需要被放入一个std::string 。 如何从浮动转换为string?

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

除非你担心性能,否则使用串stream :

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

如果你对Boost好, lexical_cast <>是一个方便的select:

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

有效的select是例如FastFormat或简单的C风格的function。

从C ++ 11开始,标准C ++库为std::to_string(arg)提供了各种支持types的std::to_string(arg)函数。

你可以定义一个模板,它不仅适用于双打,也适用于其他types。

 template <typename T> string tostr(const T& t) { ostringstream os; os<<t; return os.str(); } 

那么你可以使用它的其他types。

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

使用to_string() 。 (从C ++ 11开始可用)
例如:

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

运行它自己: http : //ideone.com/7ejfaU
这些也是可用的:

 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); 

如果您担心性能,请查看Boost :: lexical_cast库。

你可以在C ++ 11中使用std :: to_string

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

本教程给出了一个简单但优雅的解决scheme,我转录:

 #include <sstream> #include <string> #include <stdexcept> 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);