2012-11-10 152 views
3

爲什麼在此代碼atoi()功能不能正常工作,爲什麼編譯器把這個錯誤:爲什麼atoi函數不能將const char *轉換爲int?

initializing argument 1 of `int atoi(const char*)'

我的代碼如下:

#include <iostream.h> 
#include <stdlib.h> 
int main() 
{ 
    int a; 
    char b; 
    cin >> b; 
    a = atoi(b); 
    cout << "\na"; 
    return 0; 
} 
+8

你給它一個'char' ... – chris

+8

如果你不知道'char'和'爲const char *的區別',你應該退後一步,閱讀一本很好的入門書。類型是基本的,對它們有一個牢固的理解是很重要的。 –

+1

'atoi'是一個糟糕的選擇,因爲無法判斷它是否失敗。我最喜歡的是'boost :: lexical_cast'。 – chris

回答

3

bcharatoi()你必須通過char *const char *因爲C++是嚴格的類型檢查語言,所以你得到這個

它肩d是這樣cout<<"\n"<<a;不是這個cout<<"\na"因爲後來一個不打印的

+0

id可以做些什麼?我必須添加到我的代碼中。 –

3

值正如你可以在這裏看到atoi

ATOI接收字符指針,而不是一個char像你這樣。 它是有道理的,因爲通過這種方式,你可以在一個「數字」(用一個字符串表示)中應用atoi,其中包含多於1位的數字,例如atoi(「100」);

int atoi (const char * str); 

否則,如果它是一個字符,你只能轉換'0','1','2'..'9'。

編輯:嘗試這個例子:

#include <iostream> 
#include <stdlib.h> 
int main() 
{ 
    int a; 
    char b[10]; 


    cin >> b; 
    a = atoi(b); 

    cout<<"\n"<<a; 
    return 0; 
} 
+0

我能做些什麼?我必須添加的代碼 –

+0

將char b [10]更改爲char [10](例如,10),將#include 更改爲#include ,並將cout <<「\ na」更改爲此cout <<「\ n」< dreamcrash

+0

你明白了嗎? – dreamcrash

相關問題