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

ASCII数字字符转数值:MinGW64下如何得到预期数字输出

解决方法:将字符数字转换为对应整数数值

你的问题出在字符数字的ASCII值和实际整数数值的差异上:比如字符'4'的ASCII编码是52,'3'是51,当你把char类型的字符直接赋值给int类型的num_of_times时,编译器会自动将字符转换为对应的ASCII数值,所以输出的是52、51而非预期的4、3。

正确的转换方式

只需要用字符数字减去字符'0'的ASCII值即可——因为ASCII表中'0'到'9'是连续排列的,'0'的ASCII值是48,所以'4' - '0'就等于52 - 48 = 4,正好得到你想要的整数数值:

std::string encodedstr; 
if(std::isdigit(encodedstr.at(i))) { 
    num_of_times = encodedstr.at(i) - '0'; // 关键修改
    std::cout << num_of_times << "\n"; 
}

为什么static_cast<char>没用?

如果你把num_of_times定义为int类型,就算你用static_cast<char>(encodedstr.at(i))转换,赋值给int变量时还是会被自动提升为对应的ASCII数值,cout输出的依然是52、51。只有当num_of_times是char类型且你想输出字符本身时,这个转换才有意义,但你需要的是整数数值,所以直接减'0'是最直接高效的方案。

内容的提问来源于stack exchange,提问作者user2650277

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:31:18