You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:06:00