C++如何将char组成的字符串转为int数组 循环转换报错怎么解决
错误原因
stoi 函数的入参要求为 std::string 类型,你代码中 hasil[i] 取到的是单个 char 类型的字符,参数类型不匹配,所以会触发编译报错。
解决方法
有两种常用的转换方案:
- 方案1:利用ASCII码偏移计算(更推荐,效率更高)
数字字符的ASCII编码是连续的,'0'到'9'对应的ASCII值依次递增1,只需要用取出的字符减去'0'就能得到对应的int类型数值,把循环里的赋值语句替换为:cod[i] = hasil[i] - '0'; - 方案2:先把单个字符转为字符串再调用stoi(不推荐,逻辑冗余)
如果你要保留stoi的写法,需要先把单个char包装为string类型:cod[i] = stoi(string(1, hasil[i]));
修正后完整可运行代码
#include <iostream> #include <string> using namespace std; int main(){ string hasil; int cod[5]; hasil = "99999"; for(int i = 0; i < 5; i++){ cod[i] = hasil[i] - '0'; } for(int i = 0; i < 5; i++){ cout << cod[i] + 1; } return 0; }
运行效果
上述代码运行后会输出 1010101010,符合每个数字加1后输出的预期。
内容的提问来源于stack exchange,提问作者Rapha S.
相关产品推荐
相关产品推荐

