Пространства имён
Варианты
Действия

std::strtoimax, std::strtoumax

Материал из cppreference.com
< cpp‎ | string‎ | byte

Определено в заголовочном файле <cinttypes>
std::intmax_t strtoimax(const char* nptr, char** endptr, int base);
(начиная с C++11)
std::uintmax_t strtoumax(const char* nptr, char** endptr, int base);
(начиная с C++11)
Интерпретирует целое значение в строку байт, на который указывает nptr.
Оригинал:
Interprets an integer value in a byte string pointed to by nptr.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Функция отбрасывает пробельные символы до тех пор, пока не будет найден первый непробельный символ. Затем из строки извлекаются символы, необходимые для формирования корректного представления целого числа в системе счисления с основанием base и преобразуются в целочисленное значение. Корректное целочисленное значение состоит из следующих частей:

  • (необязательно) знак плюс или минус
  • (необязательно) префикс (0), указывающий на то, что используется восьмеричная система счисления (применяется только в случае, когда base равен 8)
  • (необязательно) префикс (0x или 0X), указывающий на то, что используется шестнадцатеричная система счисления (применяется только в случае, когда base равен 16)
  • последовательность цифр

Набором корректных цифр для целочисленного значения в двоичной системе счисления является 01, для троичной 012, и так далее. Для оснований больше, чем 10, набор корректных цифр дополняется символами латинского алфавита, начиная с Aa для системы счисления с основанием 11, до Zz для системы счисления с основанием 36. Регистр символов значения не имеет.

Функции устанавливает указатель на которую указывает endptr чтобы она указывала на символ после последнего символа интерпретируются. Если endptr является NULL, он игнорируется.
Оригинал:
The functions sets the pointer pointed to by endptr to point to the character past the last character interpreted. If endptr is NULL, it is ignored.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Если nptr пуст или не иметь ожидаемого форму, преобразование не выполняется, и (если enptr не NULL) значение nptr хранится в объекте, на который указывает endptr.
Оригинал:
If the nptr is empty or does not have the expected form, no conversion is performed, and (if enptr is not NULL) the value of nptr is stored in the object pointed to by endptr.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править] Параметры

nptr -
указатель с нулевым байтом строки должны интерпретироваться
Оригинал:
pointer to the null-terminated byte string to be interpreted
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
endptr -
Указатель на указатель на символ .
Оригинал:
pointer to a pointer to character.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
base -
' Из базы интерпретировать целое значение
Оригинал:
base of the interpreted integer value
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Возвращаемое значение

  • В случае успеха, целое значение, соответствующее содержание str возвращается.
    Оригинал:
    If successful, an integer value corresponding to the contents of str is returned.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • Если преобразованное значение выпадает из диапазона соответствующий тип возвращения, диапазон ошибки (настройка [[cpp/error/errno|errno]] в ERANGE) и INTMAX_MAX, INTMAX_MIN, UINTMAX_MAX или 0 возвращается, в случае необходимости.
    Оригинал:
    If the converted value falls out of range of corresponding return type, a range error occurs (setting [[cpp/error/errno|errno]] to ERANGE) and INTMAX_MAX, INTMAX_MIN, UINTMAX_MAX or 0 is returned, as appropriate.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • Если преобразование не может быть выполнено, 0 возвращается.
    Оригинал:
    If no conversion can be performed, 0 is returned.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Пример

#include <iostream>
#include <string>
#include <cinttypes>
 
int main()
{
    std::string str = "helloworld";
    std::intmax_t val = std::strtoimax(str.c_str(), nullptr, 36);
    std::cout << str << " in base 36 is " << val << " in base 10\n";
 
    char* nptr;
    val = std::strtoimax(str.c_str(), &nptr, 30);
    if(nptr != &str[0] + str.size())
        std::cout << str << " in base 30 is invalid."
                  << " The first invalid digit is " << *nptr << '\n';
}

Вывод:

helloworld in base 36 is 1767707668033969 in base 10
helloworld in base 30 is invalid. The first invalid digit is w

[править] См. также

(C++11)
(C++11)
преобразует широкий строку std::intmax_t или std::uintmax_t
Оригинал:
converts a wide string to std::intmax_t or std::uintmax_t
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [edit]
преобразует байт строку в целое число
Оригинал:
converts a byte string to an integer value
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [edit]
преобразует байт строку в целое число без знака
Оригинал:
converts a byte string to an unsigned integer value
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [edit]
C documentation for strtoimax, strtoumax