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

C++中如何将字符串指定位置字符转为整数(禁止使用%)

字符串指定索引字符转整数的实现方案

核心原理

在ASCII编码规则中,数字字符'0'到'9'的数值是连续递增的:'0'对应ASCII值48,'1'对应49,依此类推。因此,将目标数字字符减去'0'的字符值,就能直接得到对应的整数,这个方法完全不需要使用%运算符,符合需求。

函数实现

int func(const string& N, int curr_ind)
{
    // 可选:添加索引合法性检查,避免越界访问
    if (curr_ind < 0 || curr_ind >= static_cast<int>(N.size())) {
        // 越界时可根据需求返回错误值,这里示例返回-1
        return -1;
    }
    // 利用ASCII差值完成转换
    return N[curr_ind] - '0';
}

注:参数使用const string&是为了避免不必要的字符串拷贝,优化性能;如果严格遵循给出的函数签名,也可以写成int func(string N, int curr_ind),但推荐使用引用版本。

测试示例

结合原代码,完整测试代码如下:

#include <iostream>
#include <string>
using namespace std;

int func(const string& N, int curr_ind)
{
    if (curr_ind < 0 || curr_ind >= static_cast<int>(N.size())) {
        return -1;
    }
    return N[curr_ind] - '0';
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    string N; // 注意原代码中的String需改为小写string,符合C++标准库命名
    cin >> N;

    // 测试:输入"123",索引1对应字符'2',返回整数2
    cout << func(N, 1) << endl;
}

补充说明

原代码中的String N;是错误写法,C++标准库的字符串类是std::string,在声明using namespace std;后应写为string N;。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:45:13