2014-10-28 54 views
-4

我想推動一些數字字符的數組。但數字很大,因爲exameple讓'125'。 我試過3原因: 1)整數:如何將數字「125」推到char數組中?

char arr[2]; 
    int number = 125; 
    int *pNumber = &number; 
    memcpy(arr + 0, pNumber, sizeof(arr)); 
    cout << (int)arr[0] << endl; 

和輸出繼電器是:

125 

因此,這是驚人的!但如果我改變大於127的數字,所以結果是不好的。對於128是-128,129是-127 .....怎麼可能?有沒有辦法解決它?至於我炭的尺寸小於128

2)char數組:

char arr[2]; 
    char *arr2 = new char[3]; 
    arr2[0] = '8'; 
    arr2[1] = '9'; 
    arr2[2] = '\0'; 
    memcpy(arr + 0, (char*)arr2, sizeof(pole)); 
    cout << arr[0] << endl; 

然而thisone打印只是最前一頁符號 '8'。我可以修復它嗎?或者這又是一個壞的方式?

3)字符串:

char arr[2]; 
string s = "125"; 
string *ps = &s; 
memcpy(pole + 0, ps, sizeof(pole)); 
cout << pole[0] << endl; 

該輸出一些跡象,我可以不承認..

請,你能告訴我,我可怎麼辦呢?謝謝!

+1

你不能在一個符號的字符超過127個存儲,我明白了什麼,你想要做什麼。 – 2014-10-28 00:08:05

+0

如果你解釋了你真正想要發生的事情,這將有很大的幫助。當你將128個字符推到一組字符中時,你想實際發生什麼? – 2014-10-28 00:09:24

+0

當你超過127個字符時,它會溢出到負值。使用無符號字符無負數,最大值爲255 – Shadow 2014-10-28 00:10:42

回答

0

這是很難說,但我認爲這是你在找什麼

char arr[15]; 
int number = 125; 
sprintf(arr, "%d", number); 

這會爲任何數量的工作提高到2十億(2^31)。

+0

謝謝您的回答,但我希望數字= 125是在第一個索引處,所以:arr [0] = 125。我知道,像這樣它是不可能的,但是如果會有類似arr [0] =指針(對於數字)。至於我,我應該使用「memcpy」..我仍然在嘗試:] – Frenky 2014-10-28 01:08:34

0

我擁有它!我想是這樣的:

char arr[10]; 
int number = 125; 
int * pNumber = &number; 
memcpy(arr + 0, (char*)pNumber, sizeof(int)); 
char *out = arr + 0; 
int *a = ((int*)out); 
cout << *a << endl; 

而現在的輸出中是125:] 感謝

+0

cout << 125 << endl;做同樣的事情。 – 2014-10-28 13:24:24

相關問題