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


strtol, , wcstol_strtol_l_wcstol_l

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

Синтаксис

long strtol(
   const char *string,
   char **end_ptr,
   int base
);
long wcstol(
   const wchar_t *string,
   wchar_t **end_ptr,
   int base
);
long _strtol_l(
   const char *string,
   char **end_ptr,
   int base,
   _locale_t locale
);
long _wcstol_l(
   const wchar_t *string,
   wchar_t **end_ptr,
   int base,
   _locale_t locale
);

Параметры

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

end_ptr
Выходной параметр, указывающий на символ после последнего интерпретированного символа. Игнорируется, если NULL.

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

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

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

strtol, wcstol, _strtol_lи _wcstol_l возвращает значение, представленное в string. Они возвращают значение 0, если преобразование невозможно. Когда представление приведет к переполнению, они возвращают LONG_MAX или LONG_MIN.

errno значение ERANGE />, если возникает переполнение или переполнение. Если задано EINVAL string NULLзначение . Или, если base ненулевое значение и меньше 2 или больше 36. Дополнительные сведения о ERANGEкодах EINVALвозврата и других кодах возврата см. в разделе errno, _doserrnoи _sys_errlist_sys_nerr.

Замечания

, strtolwcstol_strtol_lи _wcstol_l функции преобразуются string в longобъект . Они перестают читать string на первом символе, не распознаваемом как часть числа. Это может быть конечный символ null или первый буквенно-цифровой символ, превышающий или равный base.

wcstol и _wcstol_l — это версии функций strtol и _strtol_lдля расширенных символов. Их string аргумент — это строка с широким символом. Эти функции работают одинаково strtol и _strtol_l в противном случае. Параметр категории языкового LC_NUMERIC стандарта определяет распознавание символа радикса (дробного маркера или десятичной запятой).string Функции strtol и wcstol использование текущего языкового стандарта. _strtol_l вместо _wcstol_l этого используйте переданный языковой стандарт. Дополнительные сведения см. в разделе [setlocale] и языкового стандарта.

Когда end_ptr это NULLтак, это игнорируется. В противном случае указатель на символ, который остановил сканирование, хранится в расположении, на которое указывает end_ptr. Преобразование невозможно, если допустимые цифры не найдены или указана недопустимая база. Затем значение string сохраняется в расположении, на которое указывает end_ptr.

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

[] [whitespace{+ | -}] [0 [{ x | X }]] [alphanumerics]

Квадратные скобки ([ ]) окружают необязательные элементы. Фигурные скобки и вертикальная полоса ({ | }) окружают альтернативные варианты для одного элемента. whitespace может состоять из пробелов и символов табуляции, которые игнорируются. alphanumerics являются десятичными цифрами или буквами 'a' ( 'z' или 'A' через 'Z'). Первый символ, который не соответствует этой форме, останавливает сканирование. Если base значение от 2 до 36, оно используется в качестве основы числа. В противном base 0случае начальные символы строки, на которые указывает строка string , используются для определения базы. Если первый символ имеет 0значение , а второй символ не 'x' является или 'X'строка интерпретируется как восьмеричное целое число. Если первый символ и '0' второй символ или 'x' 'X', строка интерпретируется как шестнадцатеричное целое число. Если первый символ проходит '1' '9', строка интерпретируется как десятичное целое число. Буквы 'a' через 'z' (или 'A' через 'Z') назначаются значения от 10 до 35. Сканирование допускает только буквы, значения которых меньше base. Первый символ за пределами диапазона основания останавливает сканирование. Например, предположим string , что начинается с "01". Если base есть 0, сканер предполагает, что это восьмеричное целое число. '9' Или '8' символ останавливает сканирование.

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

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

Подпрограмма TCHAR.H _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcstol strtol strtol wcstol
_tcstol_l _strtol_l _strtol_l _wcstol_l

Требования

Маршрут Обязательный заголовок
strtol <stdlib.h>
wcstol <stdlib.h> или <wchar.h>
_strtol_l <stdlib.h>
_wcstol_l <stdlib.h> или <wchar.h>

Функции _strtol_l _wcstol_l являются определенными корпорацией Майкрософт, а не частью стандартной библиотеки C. Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

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

См. также

Преобразование данных
Локаль
localeconv
setlocale, _wsetlocale
Строки в числовые функции значений
strtod, , _strtod_lwcstod_wcstod_l
strtoll, , _strtoll_lwcstoll_wcstoll_l
strtoul, , _strtoul_lwcstoul_wcstoul_l
atof, , _atof_l_wtof_wtof_l