如何在C++中将long
转换为string
?如何在C++中将long转换为字符串?
回答
你可以使用stringstream。
#include <sstream>
// ...
std::string number;
std::stringstream strstream;
strstream << 1L;
strstream >> number;
标准库中通常会有一些专有的C函数供您的编译器使用。尽管如此,我更喜欢更“便携”的变体。
C做的方法是用sprintf,但这不是很安全。在一些库中有像sprintf_s这样的新版本可以防止缓冲区溢出。
结账std::stringstream
。
#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
我通常的做法是用sprintf。等了很久,你可以做以下假设你是一个32位架构:
char buf[5] = {0}; // one extra byte for null
sprintf(buf, "%l", var_for_long);
int main()
{
long mylong = 123456789;
string mystring;
stringstream mystream;
mystream << mylong;
mystring = mystream.str();
cout << mystring << "\n";
return 0;
}
有几种方法。阅读The String Formatters of Manor Farm进行深入比较。
那么如果你是复制粘贴的球迷,在这里它是:
#include <sstream>
template <class T>
inline std::string to_string (const T& t)
{
std::stringstream ss;
ss << t;
return ss.str();
}
我不知道这是什么样的功课,但最有可能老师不希望有一个答案,你只需调用一个“神奇”的现有功能(尽管这是推荐的方式),但他想知道是否可以自己实现。
回到过去,我的老师曾经说过这样的话:“我想看看你是否可以自己编程,而不是如果你能在系统中找到它。”那么,怎么不对他;)..
无论如何,如果你的老师是一样的,这里是做硬盘的方式 ..
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
不“困难的方式”,但我想在实际的算法中什么是重要的。
boost::lexical_cast<std::string>(my_long)
更这里http://www.boost.org/doc/libs/1_39_0/libs/conversion/lexical_cast.htm
一个不被任何人所覆盖到目前为止的东西,来帮助你思考问题进一步,应该是一个长镜头,当它被强制转换为字符串的格式。
只需看看spreedsheet程序(如Calc/Excel)。你是否希望它四舍五入到最接近的百万,如果它是负数,则用括号表示,总是显示符号....是否该数字表示其他东西,是否应该用Oractal或Hex显示它?
到目前为止的答案给了你一些默认输出,但也许不是正确的。
在C++ 11中,实际上有<字符串>中的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);
可以在C++ 11
long val = 12345;
std::string my_val = std::to_string(val);
- 1. 将字符串转换为long long C?
- 2. 如何将字符串转换为long
- 3. 如何将字符串转换为long?
- 4. 将字符串转换为long long值
- 5. 将字符串转换为long long
- 6. 将字符串转换为long long int
- 7. 将long long转换为C中的字符串?
- 8. 将字符串转换为无符号long long int C
- 9. 在字符串C++中转换Long?
- 10. 如何将字符串转换为long long
- 11. Android - 将字符串转换为long值
- 12. 将字符串转换为long triggerAtMilli
- 13. 如何在Mapstruct中将空字符串转换为Long?
- 14. 如何将字符串转换为Kotlin中的Long?
- 15. 如何将Objective-C字符串转换为C字符串?
- 16. 在android ..中的服务中,将字符串转换为long?
- 17. 将一个ASCII字符串转换为long long
- 18. 将C++字符串转换为long而没有out_of_range异常
- 19. 如何将Long值转换为使用sql的字符串
- 20. 如何将List(Long)转换为字符串数组? (VB)
- 21. 在unix shell ksh中将日期字符串转换为long
- 22. 在excel宏中将字符串转换为long
- 23. 在java中将字符串转换为long
- 24. 在C++中将Java字节数组(long值)转换为long
- 25. Java long不能转换为字符串
- 26. C++ - 将字符串转换为字符
- 27. 如何在C/C++中将字符串从UTF8转换为Latin1?
- 28. 如何将c字符串转换为d字符串?
- 29. 如何将C++字符串转换为.NET字符串^?
- 30. 如何使用C#将字符串转换为PascalCase字符串?
只是有点吹毛求疵的使用std::to_string ......我不会称之为 “铸造”。 – kbyrd 2009-06-03 22:40:51
@krbyrd你能告诉我为什么吗?我自己是一名.NET技术人员,C++对我仍然感到不舒服。 :) – 2009-06-03 22:42:41
同意,这是一个转换,而不是演员。 – ralphtheninja 2009-06-03 22:43:56