从char到const * char的无效转换,代码有什么问题?

时间:2019-06-20 10:12:56

标签: c++ arrays string char

我正在尝试编写一个带有一个int参数并返回其数字总和的函数。例如,digital_root(123)将返回1 + 2 + 3,即6,并且在for循环中我无法将单个字符转换为整数。

应该同时使用atoi()和stoi()函数。代码有什么问题?

int digital_root(int x)
{
    int t = 0;
    string str = to_string(x);
    for(char& c : str){
        t += atoi(c);
    }
    return t;
}

我希望字符成功转换为整数。我该怎么做?

1 个答案:

答案 0 :(得分:1)

看看std::atoi,它的参数类型为const char*,但是您要传递一个char。从charconst char*的转换是不可能的,这是编译器抱怨的。

您想要的是通过执行一些ASCII数学将char转换为int:

t += static_cast<int>(c)  - '0';

但是请注意,尽管这可行,但是对于此任务有更好的解决方案。它不需要转换为字符串,而是仅依靠整数除法,反复使用% 10