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

