在此简单函数中从'char'到'const char *'的无效转换

时间:2019-08-13 19:50:20

标签: c++ compiler-errors

代码如下:

bool Vehicle::checkID(std::string id)
{
    std::vector<int> digits;

    for (char c : id)
    {
        if(std::isdigit(c))
        {
            digits.push_back(atoi(c));
        }

        else
        {
            digits.push_back(int(c));
        }
    }

我不知道他为什么会为“ digits.push_back(atoi(c))”抛出此错误。

我是一个初学者,我知道这对您来说并不难。

2 个答案:

答案 0 :(得分:5)

你不能做:

atoi(c)

atoi()期望为char *。你可能想要

digits.push_back(c - '0');

答案 1 :(得分:2)

函数atoi()采用单个const char *类型作为参数。

您正在使用char参数进行调用。编译器不知道如何从一种转换为另一种。

atoi实际上想要一个字符串作为输入,您不能使用单个字符来调用它。字符串始终需要一个零字符作为终止符。