在C++里获取一个int整数各个数位,最核心的做法是结合取模运算符和整除运算。通过对10取余可以得到个位,再除以10后继续取余就能得到十位,依此类推。下面先给出基础示例,再说明更通用的写法。

提取个位和十位的基础示例
假设有一个正整数n,我们想分别取出它的个位和十位数字,可以直接用下面的代码:
#include <iostream>
using namespace std;
int main() {
int n = 1234;
int ge = n % 10; // 个位:4
int shi = (n / 10) % 10; // 十位:3
cout << "个位: " << ge << endl;
cout << "十位: " << shi << endl;
return 0;
}
上面代码中,n % 10得到个位,n / 10把原数字右移一位,再对10取余就得到了十位。
通用地获取所有数位
如果需要把整数的每一位都拆出来,可以用循环不断取余并除以10,直到数字变为0:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n = 56789;
vector<int> digits;
while (n > 0) {
digits.push_back(n % 10); // 从个位开始存入
n = n / 10;
}
// digits中依次为 9 8 7 6 5
for (int i = 0; i < digits.size(); i++) {
cout << "第" << i << "位: " << digits[i] << endl;
}
return 0;
}
处理负数的情况
当输入的int可能为负数时,建议先取绝对值再拆分,避免取模结果受符号影响:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n = -123;
int temp = abs(n);
int ge = temp % 10;
int shi = (temp / 10) % 10;
cout << "个位: " << ge << ", 十位: " << shi << endl;
return 0;
}
小结
使用%和/就能在C++中轻松获取int的各数位。个位用n % 10,十位用(n / 10) % 10,循环处理可拿到全部数位。掌握这个技巧对做题和写业务代码都很有帮助。