我正在尝试编写一个带有一个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;
}
我希望字符成功转换为整数。我该怎么做?
答案 0 :(得分:1)
看看std::atoi
,它的参数类型为const char*
,但是您要传递一个char
。从char
到const char*
的转换是不可能的,这是编译器抱怨的。
您想要的是通过执行一些ASCII数学将char
转换为int:
t += static_cast<int>(c) - '0';
但是请注意,尽管这可行,但是对于此任务有更好的解决方案。它不需要转换为字符串,而是仅依靠整数除法,反复使用% 10
。