我有一个整数:
int iNums = 12476;
Run Code Online (Sandbox Code Playgroud)
现在我希望将iNums中的每个数字都作为整数.就像是:
foreach(iNum in iNums){
printf("%i-", iNum);
}
Run Code Online (Sandbox Code Playgroud)
因此输出将是:"1-2-4-7-6-".但我实际上需要每个数字作为int而不是char.
感谢帮助.
Aby*_*byx 39
void print_each_digit(int x)
{
if(x >= 10)
print_each_digit(x / 10);
int digit = x % 10;
std::cout << digit << '\n';
}
Run Code Online (Sandbox Code Playgroud)
Pét*_*rök 21
将其转换为字符串,然后迭代字符.对于您可能使用的转换std::ostringstream,例如:
int iNums = 12476;
std::ostringstream os;
os << iNums;
std::string digits = os.str();
Run Code Online (Sandbox Code Playgroud)
顺便说一句,通常使用的术语(对于你所谓的"数字")是"数字" - 请使用它,因为它使你的帖子的标题更容易理解:-)
D.S*_*ley 11
这是一个更通用但递归的解决方案,它产生一个数字向量:
void collect_digits(std::vector<int>& digits, unsigned long num) {
if (num > 9) {
collect_digits(digits, num / 10);
}
digits.push_back(num % 10);
}
Run Code Online (Sandbox Code Playgroud)
由于存在相对较少的数字,递归是有限的.
Ali*_*Ali -16
int iNums = 12345;
int iNumsSize = 5;
for (int i=iNumsSize-1; i>=0; i--) {
int y = pow(10, i);
int z = iNums/y;
int x2 = iNums / (y * 10);
printf("%d-",z - x2*10 );
}
Run Code Online (Sandbox Code Playgroud)