Sdílet prostřednictvím


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_nerrEINVAL.

Poznámky

Funkce strtol, wcstol, _strtol_la _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.

wcstola _wcstol_l jsou široce znakové verze a _strtol_lstrtol . 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_ptrodkazuje . 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_ptrodkazuje .

strtolstring 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 0první 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''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 Definovány _UNICODE Definovány
_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é

Převod 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