c++ integer - > std:: преобразование строк. Простая функция?
проблема: у меня есть целое число; это целое число должно быть преобразовано в тип STL:: string.
в прошлом, я использовал stringstream
чтобы сделать преобразование,и это просто громоздко. Я знаю, что путь C-это сделать a sprintf
, но я бы предпочел сделать метод C++, который является типобезопасным(er).
есть ли лучший способ сделать это?
вот подход stringstream, который я использовал в прошлом:
std::string intToString(int i)
{
std::stringstream ss;
std::string s;
ss << i;
s = ss.str();
return s;
}
конечно, это можно переписать как Итак:
template<class T>
std::string t_to_string(T i)
{
std::stringstream ss;
std::string s;
ss << i;
s = ss.str();
return s;
}
однако у меня есть представление, что это довольно "тяжелая" реализация.
Зан отметил, что вызов довольно хороший, однако:
std::string s = t_to_string(my_integer);
во всяком случае, лучше было бы... милый.
по теме:
альтернатива itoa () для преобразования целого числа в строку C++?
3 ответа:
теперь в c++11 у нас есть
#include <string> string s = std::to_string(123);
ссылка на ссылку:http://en.cppreference.com/w/cpp/string/basic_string/to_string
Как уже упоминалось ранее, я бы рекомендовал увеличить lexical_cast. Мало того, что он имеет довольно хороший синтаксис:
#include <boost/lexical_cast.hpp> std::string s = boost::lexical_cast<std::string>(i);
Она также обеспечивает некоторую безопасность:
try{ std::string s = boost::lexical_cast<std::string>(i); }catch(boost::bad_lexical_cast &){ ... }