将整数转换为数组

kan*_*tor 15 c++ arrays integer

我想将一个整数转换为数组,所以它看起来如下所示:

int number = 123456 ;
int array[7] ;
Run Code Online (Sandbox Code Playgroud)

结果:

array[0] = 1 
array[1] = 2
...
array[6] = 6
Run Code Online (Sandbox Code Playgroud)

Bro*_*oam 26

也许更好的解决方案是倒退:

123456 % 10 = 6

123456 / 10 = 12345

12345 % 10 = 5

12345 / 10 = 1234


小智 9

只需使用模运算:

int array[6];
int number = 123456;
for (int i = 5; i >= 0; i--) {
    array[i] = number % 10;
    number /= 10;
}
Run Code Online (Sandbox Code Playgroud)

  • 怎么样的答案实际上解释了这个方法,所以OP*学到了什么? (4认同)

ava*_*kar 5

您可以通过以下方式提取数字的最后一位数字:

int digit = number % 10;
number /= 10;
Run Code Online (Sandbox Code Playgroud)

请注意,您还应该检查是否number为正。其他值需要额外处理。


Orh*_*dan 5

在我提出的内容中,integerToArray函数返回一个从整数值转换的向量.你也可以用main函数测试它:

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

vector <int> integerToArray(int x)
{
    vector <int> resultArray;
    while (true)
    {
    resultArray.insert(resultArray.begin(), x%10);
    x /= 10;
    if(x == 0)
        return resultArray;
    }
}

int main()
{
    vector <int> temp = integerToArray(1234567);
    for (auto const &element : temp)
        cout << element << " " ;
    return 0;
}

//outputs 1 2 3 4 5 6 7 
Run Code Online (Sandbox Code Playgroud)


And*_*res 0

我现在能想到的最简单的方法是:

char array[40];
int number = 123456;

memset(array, 0x00, sizeof(array));

sprintf(array, "%d", number);
Run Code Online (Sandbox Code Playgroud)

此外,您可以将每个数字转换为 int,只需将 char 值减去 0x30。

编辑:如果这是作业,你的老师可能会要求你使用 % 运算符编写程序(例如 12 % 10 = 2)。如果是这种情况,那就做好功课;-)