У меня есть значение плавающее, которое должно быть помещено в a std::string
. Как я преобразовываю из плавания для строкового представления?
float val = 2.5;
std::string my_val = val; // error here
Если вас не беспокоит производительность, используйте строковые потоки :
std::ostringstream ss;
ss << myFloat;
std::string s(ss.str());
Если вы не против Boost, lexical_cast<> является удобной альтернативой:
std::string s = boost::lexical_cast<std::string>(myFloat);
Эффективными альтернативами являются, например, FastFormat или просто функции в С-стиле.
Если вы беспокоитесь о производительности, посмотрите Boost Boost :: Lexical_Cast Библиотека.
Вы можете определить шаблон, который будет работать не только с удвоениями, но и с другими типами.
template <typename T> string tostr(const T& t) {
ostringstream os;
os<<t;
return os.str();
}
Затем вы можете использовать его для других типов.
double x = 14.4;
int y = 21;
string sx = tostr(x);
string sy = tostr(y);