为什么atoi函数不能将const char *转换为int?

3

为什么在这段代码中,atoi()函数不能正常工作?编译器为什么会出现如下错误:

初始化参数1时出错:`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;
}
2个回答

3

您可以在此处查看atoi

atoi接收char指针,而不是像您所做的那样一个char。 这是有道理的,因为这样您可以将atoi应用于具有多个数字(以字符串表示)的“数字”,例如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;
}

3

b是一个char类型,但在atoi()中,你必须传入char *或者const char *。因为c++是一种严格的类型检查语言,所以你会遇到这个问题。

应该像这样书写:cout<<"\n"<<a;而不是这样:cout<<"\na",因为后者不会打印出a的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接