Конвертировать uint64_t в std :: string - PullRequest
10 голосов
/ 08 сентября 2011

Как я могу передать значение uint64_t в std :: string? Мне нужно построить std :: string, содержащую это значение Например что-то вроде этого:

void genString(uint64_t val)
{
      std::string str;
      //.....some code for str 
      str+=(unsigned int)val;//????
}

Спасибо

Ответы [ 4 ]

16 голосов
/ 06 ноября 2014

В C ++ 11 вы можете просто использовать:

std::to_string()

это определено в заголовке

http://www.cplusplus.com/reference/string/to_string/

10 голосов
/ 08 сентября 2011

используйте либо boost::lexical_cast, либо std::ostringstream

например:.

str += boost::lexical_cast<std::string>(val);

или

std::ostringstream o;
o << val;
str += o.str();
3 голосов
/ 08 сентября 2011

Я использую что-то вроде этого кода ниже.Поскольку это шаблон, он будет работать с любым типом, который поддерживает оператор << в поток. </p>

#include <sstream>

template <typename T>
std::string tostring(const T& t)
{
    std::ostringstream ss;
    ss << t;
    return ss.str();
}

, например

uint64_t data = 123;
std::string mystring = tostring(data);
1 голос
/ 08 сентября 2011
string genString(uint64_t val)
{
   char temp[21];
   sprintf(temp, "%z", val);
   return temp;
}
...