如何將uint64_t的值轉換爲std :: string? 我需要構建包含這個值 例如這樣的事情的std :: string:將uint64_t轉換爲std :: string
void genString(uint64_t val)
{
std::string str;
//.....some code for str
str+=(unsigned int)val;//????
}
謝謝
如何將uint64_t的值轉換爲std :: string? 我需要構建包含這個值 例如這樣的事情的std :: string:將uint64_t轉換爲std :: string
void genString(uint64_t val)
{
std::string str;
//.....some code for str
str+=(unsigned int)val;//????
}
謝謝
兼用boost::lexical_cast
或std::ostringstream
如:
str += boost::lexical_cast<std::string>(val);
或
std::ostringstream o;
o << val;
str += o.str();
string genString(uint64_t val)
{
char temp[21];
sprintf(temp, "%z", val);
return temp;
}
將來任何人都可以使用它,請確保使緩衝區足夠大。如果你想增加一點效率,你也可以使這個緩衝區爲'靜態'。 –
@Seth-是靜態的(因此不可重入),比從n到n + 21進入函數時改變堆棧指針增加的速度真的快嗎? – Flexo
@awoodland是單線程應用程序。 –
我使用類似下面的代碼。因爲它是一個模板,它可以與任何類型的支持運算符< <一起使用。
#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);
在Windows(MSVC),你可以使用'%I64d'使用'std :: sprintf'時的格式說明符。 –
@Jonas - 考慮到這顯然是C++,我強烈建議保持清除'sprintf',尤其是使用非可移植擴展。 – Flexo