Sdílet prostřednictvím


Funkce převodu řetězců na numerické hodnoty

Poznámky

Každá funkce v rodině strto* převede řetězec ukončený hodnotou null na číselnou hodnotu. Dostupné funkce jsou uvedeny v následující tabulce.

Function Popis
strtod Převod řetězce na hodnotu s plovoucí desetinnou čárkou s dvojitou přesností
strtol Převod řetězce na dlouhé celé číslo
strtoul Převod řetězce na celé celé číslo bez znaménka
_strtoi64 Převod řetězce na 64bitové __int64 celé číslo
_strtoui64 Převod řetězce na 64bitové __int64 celé číslo bez znaménka

wcstod, wcstol, wcstoula _wcstoi64 jsou široce znakové verze strtod, strtol, strtoula _strtoi64, v uvedeném pořadí. Řetězcový argument pro každou z těchto širokoznakových funkcí je řetězec širokého znaku; každá funkce se v opačném případě chová stejně jako její protějšk s jedním bajtem.

Funkce strtod má dva argumenty: první je vstupní řetězec a druhý ukazatel na znak, který ukončí proces převodu. strtol_strtoi64_strtoui64 a strtouljako základ čísel použijte třetí argument, který se použije v procesu převodu.

Vstupní řetězec je posloupnost znaků, kterou lze interpretovat jako číselnou hodnotu zadaného typu. Každá funkce přestane číst řetězec na prvním znaku, který nedokáže rozpoznat jako součást čísla. Tento znak může být ukončovací znak null. Pro strtol, strtoula _strtoi64, a _strtoui64, tento ukončovací znak může být také první číselný znak větší nebo roven uživatelsky zadaný číselný základ.

Pokud není ukazatel na konverzní znak zadaný uživatelem nastavený NULL na ani nullptr v době volání, uloží se místo toho ukazatel na znak, který zastavil kontrolu. Pokud nelze provést žádný převod (nebyly nalezeny žádné platné číslice nebo byla zadána neplatná základna), hodnota ukazatele řetězce je uložena na této adrese.

strtod očekává řetězec následujícího formuláře:

[whitespace] [sign] [digits] [.digits] [{d | D | e | E}[sign]digits]

Může whitespace se skládat z mezery nebo znaků tabulátoru, které jsou ignorovány; sign je buď plus (+) nebo minus (-), a digits jsou jedna nebo více desetinných míst. Pokud se před znakem radix nezobrazí žádné číslice, musí se za znakem radix objevit alespoň jedna číslice. Za desetinnými číslicemi může následovat exponent, který se skládá z úvodního písmena (d, D, enebo E) a volitelně podepsané celé číslo. Pokud se nezobrazí žádná exponentní část nebo znak radixu, předpokládá se, že znak radix následuje za poslední číslicí v řetězci. První znak, který se nevejde do tohoto formuláře, zastaví prohledávání.

Funkce strtol, strtoul_strtoi64a _strtoui64 funkce očekávají řetězec následující formuláře:

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

Pokud je základní argument mezi 2 a 36, použije se jako základ čísla. Pokud je to 0, počáteční znaky odkazované ukazatelem na konec převodu se použijí k určení základu. Pokud je první znak 0 a druhý znak není x nebo X, řetězec se interpretuje jako osmičkové celé číslo; jinak se interpretuje jako desetinné číslo. Pokud je první znak 0 a druhý znak je x nebo X, řetězec se interpretuje jako šestnáctkové celé číslo. Pokud je první znak 1 až 9, řetězec se interpretuje jako desetinné číslo. Písmena "a" až 'z' (nebo 'A' až 'Z') jsou přiřazena hodnoty 10 až 35; pouze písmena, jejichž přiřazené hodnoty jsou menší, než base jsou povoleny. strtoul a _strtoui64 umožněte předponu znaménka plus (+) nebo minus (-), počáteční znaménko minus označuje, že návratová hodnota je negatedovaná.

Výstupní hodnota je ovlivněna nastavením LC_NUMERIC nastavení kategorie národního prostředí. Další informace najdete na webu setlocale. Verze těchto funkcí bez _l přípony používají aktuální národní prostředí pro toto chování závislé na národním prostředí. Verze s _l příponou jsou shodné s tím rozdílem, že místo toho používají předaný parametr národního prostředí.

Pokud by hodnota vrácená těmito funkcemi způsobila přetečení nebo podtečení nebo pokud převod není možný, vrátí se speciální hodnoty velkých a malých písmen, jak je znázorněno:

Function Podmínka Vrácená hodnota
strtod Přetečení +/- HUGE_VAL
strtod Podtečení nebo bez převodu 0
strtol + Přetečení LONG_MAX
strtol -Přetečení LONG_MIN
strtol Podtečení nebo bez převodu 0
_strtoi64 + Přetečení _I64_MAX
_strtoi64 -Přetečení _I64_MIN
_strtoi64 Bez převodu 0
_strtoui64 Přetečení _UI64_MAX
_strtoui64 Bez převodu 0

_I64_MAX, _I64_MINa _UI64_MAX jsou definovány v <LIMITS.H>.

wcstod, wcstol, , wcstoul, _wcstoi64a _wcstoui64 jsou široce znakové strtodverze , strtolstrtoul, _strtoi64, a _strtoui64, v uvedeném pořadí; ukazatel na konec převodní argument na každý z těchto širokoznakových funkcí je řetězec širokého znaku. Jinak se každá z těchto širokoznakových funkcí chová stejně jako její protějšk s jedním bajtem.

Viz také

Převod dat
Národní prostředí
Interpretace vícebajtových sekvencí znaků
Podpora pro matematiku a plovoucí desetinou čárku
atof, _atof_l, _wtof, _wtof_l