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
, wcstoul
a _wcstoi64
jsou široce znakové verze strtod
, strtol
, strtoul
a _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 strtoul
jako 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
, strtoul
a _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
] [] [digits
sign
] [.
digits
] [{d
e
D
| | 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
, e
nebo 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
_strtoi64
a _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_MIN
a _UI64_MAX
jsou definovány v <LIMITS.H>
.
wcstod
, wcstol
, , wcstoul
, _wcstoi64
a _wcstoui64
jsou široce znakové strtod
verze , strtol
strtoul
, _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é
Konverze dat
Národní prostředí
Interpretace vícebajtových sekvencí znaků
Podpora pro matematiku a plovoucí desetinou čárku
atof
, _atof_l
, , _wtof
_wtof_l