提供API轉換_int64爲字符串
當我問他們給我一個_int64
10位十六進制數字,但我的內部函數需要字符串我該如何有效地轉換,我有一個問題...
截至目前,我只是在內部使用字符串,但出於兼容性原因,我使用char*
c風格,以便給任何系統32或64它無所謂。這是準確的事情嗎?還是我錯了?
使用char*
vs _int64
是否存在問題?
提供API轉換_int64爲字符串
當我問他們給我一個_int64
10位十六進制數字,但我的內部函數需要字符串我該如何有效地轉換,我有一個問題...
截至目前,我只是在內部使用字符串,但出於兼容性原因,我使用char*
c風格,以便給任何系統32或64它無所謂。這是準確的事情嗎?還是我錯了?
使用char*
vs _int64
是否存在問題?
#include <string>
#include <sstream>
int main()
{
std::stringstream stream;
__int64 value(1000000000);
stream << value;
std::string strValue(stream.str());
return 0;
}
最好的選擇是改變函數不再使用字符串,所以你可以按原樣傳遞原始__int64。 __int64在32位和64位系統中的工作原理相同。
如果您必須轉換爲字符串,有幾個選項。 Steve向你展示瞭如何使用stringstream,這是C++的方式。您也可以使用C的sprintf()或_i64toa()函數:
__int64 value = ...;
char buffer[20];
sprintf(buffer, "%Ld", value);
__int64 value = ...;
char buffer[20];
_i64toa(value, buffer, 10);
我很喜歡char *,它是32位和64位下的基本單位。這是不是真的?只是好奇。另外在這種情況下,我從標準輸入讀取像argc和argv(它使用char *),這只是一種情況,更不用說現在有很多東西我可以在內部用std string類來完成。 – 2010-11-04 18:17:19
作爲一種數據類型,'char'在32位和64位中是相同的,但是對於char的*指針*是不同的(4字節對8字節),儘管它的語義(一個「 char'值)是相同的。 – 2010-11-05 03:05:02
C++ 11規範了std::to_string
功能:
#include <string>
int main()
{
int64_t value = 128;
std::string asString = std::to_string(value);
return 0;
}
這個問題是沒有意義的。爲什麼機器中的位數決定它是否可以使用正確的C++'字符串?你真的在問什麼? – 2017-11-07 16:20:51