strtoul, _strtoul_l, wcstoul, _wcstoul_l

Преобразует строки в длинное целое число без знака.

Синтаксис

unsigned long strtoul(
   const char *strSource,
   char **endptr,
   int base
);
unsigned long _strtoul_l(
   const char *strSource,
   char **endptr,
   int base,
   _locale_t locale
);
unsigned long wcstoul(
   const wchar_t *strSource,
   wchar_t **endptr,
   int base
);
unsigned long _wcstoul_l(
   const wchar_t *strSource,
   wchar_t **endptr,
   int base,
   _locale_t locale
);

Параметры

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

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

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

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

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

Функция strtoul возвращает преобразованное значение, если таковое имеется, или ULONG_MAX в случае переполнения. Функция strtoul возвращает 0, если преобразование не может быть выполнено. wcstoul возвращает значения аналогично strtoul. Для обеих функций при возникновении переполнения или потери значимости для параметра errno устанавливается значение ERANGE.

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

Замечания

Эти функции преобразуют входную строку strSource в целое значение unsigned long.

strtoul останавливает чтение строки strSource на первом символе, которую невозможно распознать как часть числа. Этот символ может быть завершающим NULL, или он может быть первым числовым символом, превышающим или равным base. Параметр LC_NUMERIC категории языкового стандарта определяет распознавание символа радикса в strSource; дополнительные сведения см. в разделе setlocale. Функции strtoul и wcstoul используют текущий языковой стандарт. Функции _strtoul_l и _wcstoul_l идентичны, за исключением того, что они используют переданный языковой стандарт. Дополнительные сведения см. в разделе Locale.

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

wcstoul— это версия strtoul с расширенными символами; ее аргумент strSource — строка расширенных символов. В остальном эти функции работают одинаково.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

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

TCHAR.H Обычной _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcstoul strtoul strtoul wcstoul
_tcstoul_l strtoul_l _strtoul_l _wcstoul_l

Функция strtoul ожидает, что 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, строка интерпретируется как десятичное целое число. Буквы az через (или A через Z) присваиваются значениям от 10 до 35; только буквы, назначенные значения которых меньше base разрешены. Первый символ за пределами диапазона основания останавливает сканирование. Например, если значение base равно 0 и первый считанный символ — "0", то предполагается восьмеричное целое число и символ "8" или "9" останавливает чтение. Функция strtoul допускает в качестве префикса знаки плюс (+) или минус (-). Знак минус перед числом показывает, что возвращаемое значение отрицательное.

Требования

Маршрут Обязательный заголовок
strtoul <stdlib.h>
wcstoul <stdlib.h> или <wchar.h>
_strtoul_l <stdlib.h>
_wcstoul_l <stdlib.h> или <wchar.h>

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

Пример

Пример см. в примере strtod.

См. также

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