2010-11-04 87 views
0

提供API轉換_int64爲字符串

當我問他們給我一個_int64 10位十六進制數字,但我的內部函數需要字符串我該如何有效地轉換,我有一個問題...

截至目前,我只是在內部使用字符串,但出於兼容性原因,我使用char* c風格,以便給任何系統32或64它無所謂。這是準確的事情嗎?還是我錯了?

使用char* vs _int64是否存在問題?

+0

這個問題是沒有意義的。爲什麼機器中的位數決定它是否可以使用正確的C++'字符串?你真的在問什麼? – 2017-11-07 16:20:51

回答

8
#include <string> 
#include <sstream> 

int main() 
{ 
    std::stringstream stream; 
    __int64 value(1000000000); 
    stream << value;  
    std::string strValue(stream.str()); 
    return 0; 
} 
2

最好的選擇是改變函數不再使用字符串,所以你可以按原樣傳遞原始__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); 
+0

我很喜歡char *,它是32位和64位下的基本單位。這是不是真的?只是好奇。另外在這種情況下,我從標準輸入讀取像argc和argv(它使用char *),這只是一種情況,更不用說現在有很多東西我可以在內部用std string類來完成。 – 2010-11-04 18:17:19

+0

作爲一種數據類型,'char'在32位和64位中是相同的,但是對於char的*指針*是不同的(4字節對8字節),儘管它的語義(一個「 char'值)是相同的。 – 2010-11-05 03:05:02

1

C++ 11規範了std::to_string功能:

#include <string> 

int main() 
{ 
    int64_t value = 128; 
    std::string asString = std::to_string(value); 
    return 0; 
}