2013-02-07 126 views
0

你好,我試圖將一個常量字符串轉換爲一個整數的數組,但是當我嘗試它不允許它。我的代碼是:將一個常量字符串轉換爲一個int數組?

int isRegistered(const char str[]) { 

int isbnInt[10], i; 
//char isbnArray[10]; 

//isbnArray = str; ----> something I tried 

for (i = 0; i < 10; i++) 
{ 
    isbnInt[i] = atoi(str[i]); 
    cout << isbnInt[i] << endl; 
} 
} 

但是當我嘗試編譯它,我得到一個錯誤說「從焦炭無效轉換爲const char *」

回答

3

atoi調用需要一個const char * arguement,而你傳遞一個char , 這就是問題。

您只需執行以下操作即可將字符轉換爲數字。這個減去從字符本身的0 ASCII值

isbnInt[i] = str[i] - '0'; 
+0

感謝這工作! – user1895783

0

嘗試(因爲0-9中的ASCII碼被順序地增加。):

for (i = 0; i < 10; i++) 
{ 
    isbnInt[i] = str[i] - '0'; 
    cout << isbnInt[i] << endl; 
} 

atoiconst char*作爲輸入,而不是單一的炭。

+0

感謝這工作! – user1895783

0

你的代碼也可以寫成:

for (i = 0; i < 10; i++) 
{ 
    char foo = str[i]; 
    isbnInt[i] = atoi(foo); 
    cout << isbnInt[i] << endl; 
} 

這將無法正常工作(如你發現); atoi期望char *,而不是char。

嘗試:

int isbm = atoi(str); 

,看看是否已經做了你想要的東西。

相關問題