如何在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