2015-09-19 37 views
1

我有一個很大的數字存儲到一個char數組中,並將其返回給一個cout。C + +字符數組中的數字到int

#include <iostream> 

int num() 
{ 
    char num[] = "160919040944"; 

    return (int)num; 
} 
int main() 
{ 
    std::cout << num(); 

    return 0; 
} 

它打印出一個隨機數而不是我指定的數字。

+1

'(int)num'不會做你認爲它的工作。它產生存儲器地址的數字值,在該地址中存儲'num'的第一個字符。無論如何,在大多數平臺上,編號160919040944都不適合'int'。 –

回答

1

正如在評論中提到的,(int)num不這樣做。什麼喲需要的是通過std::stoll

long long num() 
{ 
    char num[] = "160919040944"; 
    return std::stoll(num); // need conversion to long due to overflowing an int 
} 

功能std::stoll轉換從你的函數返回一個long long一個std::string(在這種情況下,從char*隱式構造)到long long int

感謝@Lorehead的評論

+1

由於在很多平臺上「long」是32位,所以你需要的是「long long」。 – Davislor

+0

@Lorehead是正確的,在我的平臺上工作('長'恰好是8個字節),但你是絕對正確的,'long long'保證至少64位,編輯。 – vsoftco