从 'char' 到 'const char*' [-fpermissive] str::atoi 的无效转换(字符串到整数)

invalid conversion from 'char' to 'const char*' [-fpermissive] str::atoi (String to Integer)

我有一个代码,我可以在其中以字符串格式输入数字(逗号分隔)。我应该将输入字符串转换为整数。我用

完成了
digit[k] = (digit[k]*10)+std::atoi(line[i]);

但我得到的错误是

jdoodle.cpp: In function 'int main()':
jdoodle.cpp:28:54: error: invalid conversion from 'char' to 'const char*' [-fpermissive]
             digit[k] = (digit[k]*10)+std::atoi(line[i]);

完整的程序是

#include <iostream>
#include<cstdlib>

using namespace std;

int main() {
char line[1024];
    int digit[1024],two[1024],k=0,m=0,temp1=0,avg=0;

    for(int i=0;i<1024;i++)
    {
        digit[i]=0;
    }

    cout << "Enter a line of string: ";
    cin.getline(line, 1024);
    for(int i = 0; line[i]!='[=15=]'; ++i)
    {

        if((line[i]>='a'&& line[i]<='z') || (line[i]>='A'&& line[i]<='Z'))
        {

            cout<<"\nInvalid input";
            return 0;
        }
        else if(line[i]>='0' && line[i]<='9')
        {
            digit[k] = (digit[k]*10)+std::atoi(line[i]);
            //++digits;
        }
        else if (line[i]==',')
        {
            k=k+1;
        }
    }
    for(int j=0;digit[j]!='[=15=]';j++)
    {
        int temp=digit[j];
        while(temp!=0)
        {

            temp=temp/10;
            count=count+1;

        }

        if(count==2)
        {
            two[m]=digit[j];
            m=m+1;
            count=0;
        }
    }
    for(int i=0;two[i]!='[=15=]';i++)
    {
        total = total+two[i];
        temp1=i;
    }
    avg=total/temp1;

    cout << avg;

    return 0;
}

atoi原型:

int atoi (const char * str);

source

在这里您可以看到 atoi 需要字符串文字,而不是单个字符。您可以更改代码

digit[k] = (digit[k]*10)+std::atoi(line[i]);

进入

digit[k] = (digit[k]*10)+(line[0] - '0');

修复此错误。这样做基本上是将您的单个字符转换为一个整数,而不使用 atoi