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

C++中如何将str[str.size()-2]与str[str.size()-1]转换为整数?

如何将C++字符串的末尾两个字符转换为整数?

在C++里把字符形式的数字转成整数其实很简单,核心就是利用ASCII码的特性——字符'0'到'9'的ASCII值是连续递增的,所以用目标字符减去'0'就能直接得到对应的整数数值。

结合你给出的代码片段,我们可以这样修改来实现需求:

int main() { 
    int D; 
    cin >> D; 
    int k; 
    int z; 
    int* tab = new int[D]; 
    for (int i = 0; i < D; i++) { 
        cin >> tab[i]; 
    } 
    // 补充声明未定义的suma变量
    int suma;
    for (int i = 0; i < D; i++) { 
        z = silnia(tab[i]); 
        string str = to_string(z); 
        if (str.size() > 1) {
            // 将倒数第二个字符转换为整数
            int secondLastDigit = str[str.size()-2] - '0';
            // 将最后一个字符转换为整数
            int lastDigit = str[str.size()-1] - '0';
            cout << secondLastDigit << " " << lastDigit;
        } else {
            // 字符串长度不足2时,倒数第二位用0代替
            int lastDigit = str[0] - '0';
            cout << 0 << " " << lastDigit;
        }
        cout << endl; 
        suma = 1; 
    } 
    // 释放动态分配的数组,避免内存泄漏
    delete[] tab;
    return 0; 
}

关键细节说明:

  • 字符转整数的原理:比如字符'7'的ASCII值是55,'0'的ASCII值是48,55 - 48 = 7,刚好得到对应的整数7,这是C++中字符转数字最简洁高效的方法。
  • 如果你的需求是把两个末尾数字拼成一个两位数的整数(比如倒数第二位是2、最后一位是9,得到整数29),只需要执行secondLastDigit * 10 + lastDigit即可,这样就能得到单个整数类型的结果。
  • 额外提醒:你原代码里的suma变量未声明,需要补充定义;动态分配的数组tab在程序结束前记得释放,避免内存泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:42:30