Конвертировать Int в Char Array - PullRequest
0 голосов
/ 24 марта 2012

Мне нужно создать класс MyInt, который обрабатывает положительные числа любого размера, создавая массив int. Я делаю конструктор, который будет использоваться для преобразования int (любого размера, поддерживаемого ints) в MyInt. Мне нужно преобразовать int в массив символов, а затем прочитать цифру за цифрой в массив int. Поэтому мой вопрос: без использования каких-либо библиотек, кроме <iostream> <iomanip> и <cstring>, как я могу преобразовать int с несколькими цифрами в массив символов?

Ответы [ 3 ]

1 голос
/ 07 марта 2014

Вам не нужно создавать массив char в качестве промежуточного шага. Цифры (я полагаю в базе 10) могут быть получены одна за другой, используя операции по модулю 10. Что-то вроде:

convert(int *ar, const int i)
{
    int p, tmp;

    tmp = i
    while (tmp != 0)
    {
        ar[p] = tmp % 10;
        tmp   = (tmp - ar[p])/10;
        p++;
    }
}
0 голосов
/ 24 марта 2012

Один из возможных способов сделать это преобразование с такими ограничениями заключается в следующем:

function convert:
    //find out length of integer (integer division works well)
    //make a char array of a big enough size (including the \0 if you need to print it)
    //use division and modulus to fill in the array one character at a time
    //if you want readable characters, don't forget to adjust for them
    //don't forget to set the null character if you need it

Надеюсь, я не неправильно понял ваш вопрос, но это сработало для меня, дав мне печатный массив, который читаеттак же, как само целое число.

0 голосов
/ 24 марта 2012

Не уверен, что это то, что вы хотите, но:

int myInt = 30;
char *chars = reinterpret_cast<char*>(&myInt);

И вы можете получить 4 отдельных символа:

chars[0]; // is the first char
chars[1]; // is the second char
chars[2]; // is the third char, and
chars[3]; // is the fourth/last char

... но я не совсем уверен, что это то, что вы ищете.

...