8 ответов:
Если вы не беспокоитесь о производительности, используйте строковые потоки:
std::ostringstream ss; ss << myFloat; std::string s(ss.str());Если вы в порядке с Boost,lexical_cast это удобный вариант:
std::string s = boost::lexical_cast<std::string>(myFloat);эффективные альтернативы, например,FastFormat или просто функции C-типа.
начиная с C++11, стандартная библиотека C++ предоставляет функцию
std::to_string(arg)с различными поддерживаемыми типами дляarg.
Вы можете определить шаблон, который будет работать не только с дублерами, но и с других типов.
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);
использовать
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);
можно использовать std:: to_string в C++11
float val = 2.5; std::string my_val = std::to_string(val);
Если вы беспокоитесь о производительности, проверьте Boost:: lexical_cast библиотека.
в этом уроке дает простое, но элегантное решение, которое я расшифровываю:
#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);
Если вы пытаетесь просто преобразовать переменную с плавающей запятой в строку, вы можете напрямую ее типизировать. (Это работает для меня ;) )
float my_value = 4.32; String a = (String) my_value;
Comments