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
相关产品推荐
相关产品推荐

