strtol
, wcstol
, , _strtol_l
_wcstol_l
Převede řetězce na long
celočíselnou hodnotu.
Syntaxe
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
Řetězec ukončený hodnotou null, který se má převést.
end_ptr
Výstupní parametr nastavený tak, aby odkazoval na znak za posledním interpretovaným znakem. Ignorováno, pokud NULL
.
base
Číselný základ, který se má použít.
locale
Národní prostředí, které se má použít.
Vrácená hodnota
strtol
, wcstol
_strtol_l
, a _wcstol_l
vrátí hodnotu reprezentovanou v string
. Pokud není převod možný, vrátí hodnotu 0. Když by reprezentace způsobila přetečení, vrátí LONG_MAX
nebo LONG_MIN
.
errno
je nastavena na ERANGE
to, pokud dojde k přetečení nebo podtečení. Je nastavená na EINVAL
to, jestli string
je NULL
. Nebo pokud base
je nenulová a menší než 2 nebo větší než 36. Další informace o ERANGE
, a další návratové kódy, viz errno
, _doserrno
, _sys_errlist
, a _sys_nerr
EINVAL
.
Poznámky
Funkce strtol
, wcstol
, _strtol_l
a _wcstol_l
funkce převedou string
na .long
Přestanou číst string
u prvního znaku, který není rozpoznán jako součást čísla. Může se jednat o ukončovací znak null nebo první alfanumerický znak větší nebo roven base
.
wcstol
a _wcstol_l
jsou široce znakové verze a _strtol_l
strtol
. Argument string
je řetězec širokého znaku. Tyto funkce se chovají stejně jako strtol
_strtol_l
v opačném případě. Nastavení kategorie národního prostředí LC_NUMERIC
určuje rozpoznávání znaku radixu (desetinná značka nebo desetinná čárka) v string
. strtol
Funkce a wcstol
použití aktuálního národního prostředí. _strtol_l
a _wcstol_l
místo toho použijte národní prostředí předané. Další informace naleznete v tématu [setlocale
] a národní prostředí.
Když end_ptr
je NULL
, je to ignorováno. V opačném případě je ukazatel na znak, který zastavil kontrolu, uložen v umístění, na které end_ptr
odkazuje . Není možné provést převod, pokud nejsou nalezeny žádné platné číslice nebo je zadán neplatný základ. Hodnota string
je pak uložena v umístění, na které end_ptr
odkazuje .
strtol
string
očekává, že odkazuje na řetězec následujícího formuláře:
[
whitespace
] [{+
|-
}] [0
[{x
|X
}]] [alphanumerics
]
Hranaté závorky ([ ]
) obklopují volitelné prvky. Složené složené závorky a svislá čára ({ | }
) obklopují alternativy pro jeden prvek. whitespace
může obsahovat mezery a znaky tabulátoru, které jsou ignorovány. alphanumerics
jsou desetinná číslice nebo písmena 'a'
prostřednictvím 'z'
(nebo 'A'
prostřednictvím 'Z'
). První znak, který se nevejde do tohoto formuláře, zastaví prohledávání. Pokud base
je mezi 2 a 36, použije se jako základ čísla. Pokud base
ano 0
, počáteční znaky řetězce, na který string
odkazuje, slouží k určení základu. Pokud je 0
první znak a druhý znak není 'x'
nebo 'X'
, řetězec se interpretuje jako osmičkové celé číslo. Pokud je '0'
první znak a druhý znak je 'x'
nebo 'X'
, řetězec se interpretuje jako šestnáctkové celé číslo. Pokud je '1'
první znak přes '9'
, řetězec je interpretován jako desetinné celé číslo. Písmena 'a'
prostřednictvím 'z'
(nebo 'A'
až 'Z'
) jsou přiřazeny hodnoty 10 až 35. Skenování umožňuje pouze písmena, jejichž hodnoty jsou menší než base
. První znak mimo rozsah základny zastaví kontrolu. Předpokládejme například, že string
začíná na "01"
. Pokud base
ano 0
, skener předpokládá, že se jedná o osmičkové celé číslo. Kontrola zastaví znak '8'
nebo '9'
znak.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Mapování rutin obecného textu
Rutina TCHAR.H | _UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tcstol |
strtol |
strtol |
wcstol |
_tcstol_l |
_strtol_l |
_strtol_l |
_wcstol_l |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
strtol |
<stdlib.h> |
wcstol |
<stdlib.h> nebo <wchar.h> |
_strtol_l |
<stdlib.h> |
_wcstol_l |
<stdlib.h> nebo <wchar.h> |
Funkce _strtol_l
jsou _wcstol_l
specifické pro Microsoft, nikoli součást standardní knihovny jazyka C. Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
Podívejte se na příklad pro strtod
.
Viz také
Konverze dat
Národní prostředí
localeconv
setlocale
, _wsetlocale
Funkce řetězcových k číselným hodnotám
strtod
, _strtod_l
, , wcstod
_wcstod_l
strtoll
, _strtoll_l
, , wcstoll
_wcstoll_l
strtoul
, _strtoul_l
, , wcstoul
_wcstoul_l
atof
, _atof_l
, , _wtof
_wtof_l