Преобразование основы C++

Привет я пытаюсь портировать некоторый код от Windows до Linux. У меня есть это:

itoa(word,aux,2);

Но GCC не распознает itoa. Как я могу сделать это преобразование для базирования 2 на C++ путь?

Спасибо ;)

5
задан Rui 11 July 2010 в 23:56
поделиться

4 ответа

Вот ответ Тома, измененный для использования базы в соответствии с требованиями вашего кода:

void itoa(int n, char s[], std::size_t base = 10) {
    const char digits[] = "0123456789abcdef";
    int i, sign;

    if (base < 2 || base > 16)
        throw std::invalid_argument("invalid base");
    if ((sign = n) < 0)  /* record sign */
        n = -n;      /* make n positive */
    i = 0;
    do {       /* generate digits in reverse order */
        s[i++] = digits[n % base]; /* get next digit */
    } while ((n /= base) > 0);         /* delete it */
    if (sign < 0)
        s[i++] = '-';
    s[i] = '\0';
    reverse(s);
}
1
ответ дан 14 December 2019 в 18:55
поделиться

Вот некоторая помощь

/* itoa:  convert n to characters in s */
 void itoa(int n, char s[])
 {
     int i, sign;

     if ((sign = n) < 0)  /* record sign */
         n = -n;          /* make n positive */
     i = 0;
     do {       /* generate digits in reverse order */
         s[i++] = n % 10 + '0';   /* get next digit */
     } while ((n /= 10) > 0);     /* delete it */
     if (sign < 0)
         s[i++] = '-';
     s[i] = '\0';
     reverse(s);
 }

Вы должны адаптировать ее под свои нужды (обратите внимание, что у этой функции 2 аргумента, а не 3). Также обратите внимание, что обратная функция также приведена в википедии.

Кроме того, здесь приведены некоторые другие случаи (но не для основания 2)

Эта функция не определена в ANSI-C и не является частью C++, но поддерживается некоторыми компиляторами.

Альтернативой, соответствующей стандарту, для в некоторых случаях может быть sprintf:

sprintf(str,"%d",value) конвертирует в десятичное основание.

sprintf(str,"%x",value) конвертирует в шестнадцатеричное основание.

sprintf(str,"%o",value) переводит в восьмеричную систему счисления.

2
ответ дан 14 December 2019 в 18:55
поделиться
1
ответ дан 14 December 2019 в 18:55
поделиться

Есть страница реализаций itoa здесь

1
ответ дан 14 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: