2012-11-10 110 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

相关问题