strtol
, , wcstol
, , _strtol_l
_wcstol_l
Konwertuj ciągi na long
wartość całkowitą.
Składnia
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
);
Parametry
string
Ciąg zakończony wartością null do konwersji.
end_ptr
Parametr wyjściowy, ustawiony tak, aby wskazywał znak po ostatnim zinterpretowany znak. Ignorowane, jeśli NULL
.
base
Podstawa liczbowa do użycia.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
strtol
, , wcstol
_strtol_l
i _wcstol_l
zwraca wartość reprezentowaną w pliku string
. Zwracają wartość 0, jeśli nie jest możliwa konwersja. Gdy reprezentacja spowoduje przepełnienie, zwracają LONG_MAX
wartość lub LONG_MIN
.
errno
jest ustawiona na ERANGE
wartość , jeśli występuje przepełnienie lub niedopełnienie. Jest ona ustawiona na EINVAL
wartość , jeśli string
ma NULL
wartość . Lub, jeśli base
jest nonzero i mniejsze niż 2, lub większe niż 36. Aby uzyskać więcej informacji na temat ERANGE
, i innych kodów powrotnych, zobacz errno
, _doserrno
, _sys_errlist
i _sys_nerr
. EINVAL
Uwagi
Funkcje strtol
, wcstol
, _strtol_l
i _wcstol_l
są konwertowane string
na long
wartość . Przestają odczytywać string
pierwszy znak, który nie jest rozpoznawany jako część liczby. Może to być znak kończący-null lub pierwszy znak alfanumeryczny większy niż lub równy base
.
wcstol
i _wcstol_l
są wersjami strtol
o szerokim znaku i _strtol_l
. Ich string
argument jest ciągiem o szerokim znaku. Te funkcje zachowują się identycznie jak strtol
i _strtol_l
w inny sposób. Ustawienie kategorii ustawień regionalnych określa rozpoznawanie LC_NUMERIC
znaku promieniowego (znacznik ułamkowy lub punkt dziesiętny) w .string
Funkcje strtol
i wcstol
używają bieżących ustawień regionalnych. _strtol_l
i _wcstol_l
zamiast tego użyj ustawień regionalnych przekazanych. Aby uzyskać więcej informacji, zobacz [setlocale
] i Ustawienia regionalne.
Gdy end_ptr
wartość to NULL
, jest ignorowana. W przeciwnym razie wskaźnik do znaku, który zatrzymał skanowanie, jest przechowywany w lokalizacji wskazywanej przez end_ptr
. Nie można wykonać konwersji, jeśli nie znaleziono prawidłowych cyfr lub określono nieprawidłową bazę. Wartość parametru string
jest następnie przechowywana w lokalizacji wskazywanej przez end_ptr
.
strtol
string
oczekuje wskazywania ciągu następującego formularza:
[
whitespace
] [{+
|-
}] [0
[{x
|X
}]] [alphanumerics
]
Nawiasy kwadratowe ([ ]
) otaczają elementy opcjonalne. Nawiasy klamrowe i pionowy pasek ({ | }
) otaczają alternatywy dla jednego elementu. whitespace
może składać się z spacji i znaków tabulacji, które są ignorowane. alphanumerics
to cyfry dziesiętne lub litery 'a'
za pośrednictwem 'z'
(lub 'A'
przez 'Z'
). Pierwszy znak, który nie pasuje do tego formularza, zatrzymuje skanowanie. Jeśli base
wartość wynosi od 2 do 36, jest używana jako podstawa liczby. Jeśli base
to 0
, początkowe znaki ciągu wskazywane przez string
są używane do określania podstawy. Jeśli pierwszy znak to 0
, a drugi znak nie 'x'
jest lub 'X'
, ciąg jest interpretowany jako ósemkowa liczba całkowita. Jeśli pierwszy znak to '0'
i drugi znak to 'x'
lub 'X'
, ciąg jest interpretowany jako liczba całkowita szesnastkowa. Jeśli pierwszy znak ma '1'
wartość , '9'
ciąg jest interpretowany jako liczba całkowita dziesiętna. 'a'
Litery przez 'z'
(lub 'A'
przez 'Z'
) są przypisane wartości od 10 do 35. Skanowanie zezwala tylko na litery, których wartości są mniejsze niż base
. Pierwszy znak poza zakresem podstawy zatrzymuje skanowanie. Załóżmy na przykład, że string
zaczyna się od "01"
. Jeśli base
wartość to 0
, skaner zakłada, że jest to liczba całkowita ósemkowa. Znak '8'
lub '9'
zatrzymuje skanowanie.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
Procedura TCHAR.H | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tcstol |
strtol |
strtol |
wcstol |
_tcstol_l |
_strtol_l |
_strtol_l |
_wcstol_l |
Wymagania
Procedura | Wymagany nagłówek |
---|---|
strtol |
<stdlib.h> |
wcstol |
<stdlib.h> lub <wchar.h> |
_strtol_l |
<stdlib.h> |
_wcstol_l |
<stdlib.h> lub <wchar.h> |
Funkcje _strtol_l
i _wcstol_l
są specyficzne dla firmy Microsoft, a nie częścią standardowej biblioteki C. Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
Zobacz przykład dla elementu strtod
.
Zobacz też
Konwersja danych
ustawienia regionalne
localeconv
setlocale
, _wsetlocale
Funkcje ciąg-wartość liczbowa
strtod
, , _strtod_l
, , wcstod
_wcstod_l
strtoll
, , _strtoll_l
, , wcstoll
_wcstoll_l
strtoul
, , _strtoul_l
, , wcstoul
_wcstoul_l
atof
, , _atof_l
, , _wtof
_wtof_l