Поделиться через


strtoimax, _strtoimax_l, wcstoimax, _wcstoimax_l

Преобразует строку в целочисленное значение наибольшего поддерживаемого целочисленного типа со знаком.

Синтаксис

intmax_t strtoimax(
   const char *strSource,
   char **endptr,
   int base
);
intmax_t wcstoimax(
   const wchar_t *strSource,
   wchar_t **endptr,
   int base
);
intmax_t _strtoimax_l(
   const char *strSource,
   char **endptr,
   int base,
   _locale_t locale
);
intmax_t _wcstoimax_l(
   const wchar_t *strSource,
   wchar_t **endptr,
   int base,
   _locale_t locale
);

Параметры

strSource
Строка, завершающаяся символом NULL, для преобразования.

endptr
Указатель на символ, который останавливает сканирование.

base
Используемое числовое основание.

locale
Используемый языковой стандарт.

Возвращаемое значение

strtoimax возвращает значение, представленное в строке strSource, кроме случаев, когда представление вызвало бы переполнение; в этом случае возвращается значение INTMAX_MAX или INTMAX_MIN, и errno устанавливается в значение ERANGE. Функция возвращает 0, если преобразование не может быть выполнено. wcstoimax возвращает значения аналогично strtoimax.

INTMAX_MAX и INTMAX_MIN задаются в STDLIB.H.

Если strSource имеет значение NULL или base имеет ненулевое значение и либо меньше 2, либо больше 36, то для errno устанавливается значение EINVAL.

Дополнительные сведения о кодах возврата см. в разделе errno, _doserrno_sys_errlistи _sys_nerr.

Замечания

Функция strtoimax преобразует strSource в intmax_t. wcstoimax — это версия strtoimax с расширенными символами; ее аргумент strSource — строка расширенных символов. В остальном эти функции работают одинаково. Обе функции перестают читать строку strSource при первом символе, которую они не могут распознать как часть числа. Это может быть завершающий пустой символ, или это может быть первый числовый символ, который больше или равен base.

Параметр категории языкового LC_NUMERIC стандарта определяет распознавание символа радикса в strSource; дополнительные сведения см. в разделе . _wsetlocalesetlocale Функции, не имеющие суффикс _l, используют текущий языковой стандарт; _strtoimax_l и _wcstoimax_l идентичны соответствующим функциям, которые не имеют суффикс _l, за исключением того, что они вместо этого используют переданный им языковой стандарт. Дополнительные сведения см. в разделе Locale.

Если endptr это не NULLтак, указатель на символ, который остановил сканирование, хранится в расположении, на которое указывает endptr. Если не удается выполнить преобразование (не найдены допустимые цифры или указано недопустимое основание), значение strSource сохраняется в расположении, указанном endptr.

Сопоставления подпрограмм универсального текста

Подпрограмма TCHAR.H _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcstoimax strtoimax strtoimax wcstoimax
_tcstoimax_l strtoimax_l _strtoimax_l _wcstoimax_l

Функция strtoimax ожидает, что strSource указывает на строку следующего вида:

[whitespace] [{+ | -}] [0 [{ x | X }]] [digits | letters]

Строка whitespace может состоять из пробелов и символов табуляции, которые игнорируются. digits — одна или несколько десятичных цифр; letters — одна или несколько букв от a до z (или от A до Z). Первый символ, который не соответствует этой форме, останавливает сканирование. Если base значение от 2 до 36, оно используется в качестве основы числа. Если base равно 0, то начальные символы строки, на которую указывает strSource, используются для определения основания. Если первый символ равен "0", а второй символ не является "x" или "X", строка интерпретируется как восьмеричное целое число. Если первый символ — 0, а второй символ равен x или X, строка интерпретируется как шестнадцатеричное целое число. Если первый символ — от 1 до 9, строка интерпретируется как десятичное целое число. Буквам от а до z (или от А до Z) присваиваются значения от 10 до 35. Допускаются только буквы с присвоенными значениями меньше base. Первый символ за пределами диапазона основания останавливает сканирование. Например, если значение base равно 0 и первый считанный символ — "0", то предполагается восьмеричное целое число, и символ "8" или "9" остановит сканирование.

Требования

Маршрут Обязательный заголовок
strtoimax, _strtoimax_l, wcstoimax, _wcstoimax_l <inttypes.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

См. также

Преобразование данных
Локаль
localeconv
setlocale, _wsetlocale
Строки в числовые функции значений
strtod, _strtod_l, wcstod, _wcstod_l
strtol, wcstol, _strtol_l, _wcstol_l
strtoul, _strtoul_l, wcstoul, _wcstoul_l
strtoumax, _strtoumax_l, wcstoumax, _wcstoumax_l
atof, _atof_l, _wtof, _wtof_l