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