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
значение EINVAL
string
NULL
значение . Или, если base
ненулевое значение и меньше 2 или больше 36. Дополнительные сведения о ERANGE
кодах EINVAL
возврата и других кодах возврата см. в разделе errno
, _doserrno
и _sys_errlist
_sys_nerr
.
Замечания
, strtol
wcstol
_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_l
wcstod
_wcstod_l
strtoll
, , _strtoll_l
wcstoll
_wcstoll_l
strtoul
, , _strtoul_l
wcstoul
_wcstoul_l
atof
, , _atof_l
_wtof
_wtof_l