在C++中,我该如何将long
转换为string
?
在C++中,我该如何将long
转换为string
?
在 C++11 中,实际上有 <string> 中的 std::to_string 和 std::to_wstring 函数。
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);
你可以使用stringstream。
#include <sstream>
// ...
std::string number;
std::stringstream strstream;
strstream << 1L;
strstream >> number;
通常在您的编译器标准库中有一些专有的C函数也可以实现。但我更喜欢更“可移植”的变体。
用C的方法是使用sprintf,但这不太安全。在一些库中有新版本,如sprintf_s,可以防止缓冲区溢出。
如果你喜欢复制粘贴,这里是:
#include <sstream>
template <class T>
inline std::string to_string (const T& t)
{
std::stringstream ss;
ss << t;
return ss.str();
}
template <typename T>
。 - avakarinline
关键字与代码内联几乎没有关系(至少自1998年以来如此)---它只是标记一个函数,以便链接器不会抱怨多个定义。 - avakarC++11中可以使用std::to_string
long val = 12345;
std::string my_val = std::to_string(val);
int main()
{
long mylong = 123456789;
string mystring;
stringstream mystream;
mystream << mylong;
mystring = mystream.str();
cout << mystring << "\n";
return 0;
}
std::string LongToString(long value)
{
std::string output;
std::string sign;
if(value < 0)
{
sign + "-";
value = -value;
}
while(output.empty() || (value > 0))
{
output.push_front(value % 10 + '0')
value /= 10;
}
return sign + output;
}
std::string
不是“困难的方法”,但我想实际算法才是最重要的。std::stringstream
的其他解决方案相比,这种方法不会更快吗? - Atul #include <sstream>
....
std::stringstream ss;
ss << a_long_int; // or any other type
std::string result=ss.str(); // use .str() to get a string back
看看 std::stringstream
。