最近有小伙伴来问到我一个问题,我觉得挺有意思的便记录下来~解决问题,换个思想,就是海阔天空,更是“山重水复疑无路,柳暗花明又一村”呀o(〃^▽^〃)o
代码报错: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
问题描述: 在C++中,想将字符串(该字符串都是数字)某个位置的数字转成 int 类型数字,是不是会想到用 stoi / atoi,当然按string的原理更适合的是用atoi,但是会出现上述的报错,如下例子:
#include<iostream>
#include<string.h>
int main(){
string str = "1234567890987654321123456789";
int sum = 0;
while(!str.empty()){
sum += atoi(str.back()); //这里会报错
str.pop_back();
}
return 0
}
我们来看看原因,atoi的原型是:int atoi (const char * str)
在这里你可以看到 atoi 需要的是一个字符串文本,而不是单个字符
针对于数字的问题,我们可以对报错的代码修改如下:
sum += str.back() - '0';