假设我有整数 1004。我想使用以下模式将其存储在数组 A 中:

    A[0]=1
    A[1]=0
    A[2]=0
    A[3]=4

我怎样才能获得该指数的价值? 我怎样才能在 C++ 中做到这一点?

#1楼 票数:1

您可以使用模 10 获得数字的最后一个索引,然后通过将数字除以 10 来删除该值。

所以假设你这样做:

1004 % 10 = 4
1004 / 10 = 100

然后对每个数字重复

#2楼 票数:1

使用静态内存:

int originalNumber = 1004;
int digitArray[10] = {0};
int idx = 0;

while (originalNumber > 0)
{
    int digit = n % 10;
    originalNumber /= 10;
    digitArray[idx] = digit;
    ++idx;
}

// Reverse the order of the array
std::reverse(std::begin(digitArray), std::begin(digitArray)+(idx-1));

#3楼 票数:0

我不确定这是否是最有效的方法,但它绝对有效。

您可以将数字中的每个数字输入到数组中,但从数组的末尾到开头。

例如,有一个大小为 4 的数组,因此您可以像这样获取数字的最后一位数字: num % 10 ,并将该数字推送到数组的第三个索引处。

代码示例:

#define SIZE 4

int* numToArray(int num)
{
    int* arr = new int[SIZE]; // assuming you already know the number of digits in the number
    for(int i = SIZE-1; i >= 0; i++)
    {
        arr[i] = num % 10; // Enters the last digit to the array
        num /= 10; // Gets rid of the last digit in the number
    }
    return arr;
}

#4楼 票数:0

我建议您使用std::vector代替普通的整数数组。

然后,您可以拥有以下内容:

#include <iostream>
#include <vector>

int main() {
    int number = 1004;
    std::vector<int> digits;

    while (number != 0) {
        digits.insert(digits.begin(), number % 10);
        number /= 10;
    }

    for (auto const i : digits) {
        std::cout << i << " "; // 1 0 0 4
    }

    // or by index

    std::cout << std::endl;

    std::cout << "[0]" << digits[0] << std::endl; // 1
    std::cout << "[1]" << digits[1] << std::endl; // 0
    std::cout << "[2]" << digits[2] << std::endl; // 0
    std::cout << "[3]" << digits[3] << std::endl; // 4

    return 0;
}

演示

#5楼 票数:0

添加到所有现有答案中,我想提出一种更优雅但效率较低的方法,利用标准库的许多奇迹。

#include <string>
#include <vector>
#include <algorithm>
#include <iostream>

int main()
{
    auto number = 1004;
    auto asString = std::to_string(number); // 
    std::vector<int> digits(asString.length());
    std::transform(asString.begin(), asString.end(), digits.begin(), [](char c){return c -'0';});

    for(auto d : digits)
    {
        std::cout << d << ' ';
    }
}

  ask by heybud translate from so

未解决问题?本站智能推荐:

2回复

如何在C++中将字符串数组转换为整数数组?

我有一串非均匀空格分隔的整数,我想对元素进行一些算术运算,所以我决定先将字符串转换为整数数组。 下面是我的做法: 这种方法有什么问题?
1回复

C ++如何将字符串的单行向量转换为整数数组

我还是 C++ 新手,我正在尝试将我从 .txt 文件制作的向量转换为 int 类型的数组。 到目前为止,我的代码成功地从文本文件中获取了所有数据并将其放入一个向量中。 然后它删除了我不需要的行。 我一直试图将其更改为 int 值,因为稍后我需要将数据按升序排序,并计算数组中的值数。
3回复

C ++如何将数组的最后4个字符转换为整数?

我知道如何使用iostream将包含数字的字符数组转换为整数: 但是如何将该数组的最后四个字符转换为int? 有没有办法指向数组中的元素并从那里开始流式传输? 理想情况下,我会从最大数组大小开始流式传输 - 4。
2回复

如何在C ++中将整数数组的向量转换为2D数组?

因此,我一直在看以下将向量转换为数组的文章,但是对于我的用例来说,这种方法似乎没有转换。 如何将向量转换为数组 我相信我对数据类型后端的理解不足。 任何帮助,将不胜感激 编辑:我已经将形式C样式的数组更改为C ++数组
3回复

将字符串转换为C++中的整数数组

有人会帮助我理解以下代码中的 while 循环,了解它的作用? 例如,从用户获取输入:1 2 3 8(未给出输入大小)和一个值(任何索引)显示数组的大小。 它正在打印数组的最大值。 这里的答案是 8。
2回复

C++ 将数字和逗号的字符数组转换为整数列表?

我在 C++ 中有一个套接字设置,它接收缓冲区数组中的字符流 buffer的字符只能是数字0 , 1 ,..., 9或逗号, 。 我想转换一个示例缓冲区内容,例如 其中最终字符位置存储在变量len ,到整数列表 我可以通过遍历字符列表,将每个数字乘以 10 并添加下一个数字,直到遇到逗
2回复

如何在C ++中将十六进制值的char数组转换为单个整数值?

我有一个十六进制值的char数组,想将它们转换为单个整数值。 我当前使用的代码有两个问题: 问题1:运行此命令后存储在strHex中的值是-当我希望将其设置为“ 000927C0”时为“ 0927ffffffc0”-添加额外的“ ffffff”的原因是什么? 问题2:如果可能的话,
4回复

在C ++中将整数转换为定长字符数组

我有一个包含1-4位数字的整数x 。 如何将其转换为4个字符的数字数组(必要时用零填充)? 也就是说,如果x为4 ,我希望字符数组y包含0004