strtold
, _strtold_l
, , wcstold
_wcstold_l
Převede řetězce na dlouhou hodnotu s plovoucí desetinnou čárkou s dvojitou přesností.
Syntaxe
long double strtold(
const char *strSource,
char **endptr
);
long double _strtold_l(
const char *strSource,
char **endptr,
_locale_t locale
);
long double wcstold(
const wchar_t *strSource,
wchar_t **endptr
);
long double wcstold_l(
const wchar_t *strSource,
wchar_t **endptr,
_locale_t locale
);
Parametry
strSource
Řetězec ukončený hodnotou null, který se má převést.
endptr
Ukazatel na znak, který zastaví kontrolu.
locale
Národní prostředí, které se má použít
Vrácená hodnota
strtold
vrátí hodnotu čísla s plovoucí desetinou čárkou jako číslo long double
s výjimkou případů, kdy reprezentace způsobí přetečení – v takovém případě vrátí funkce +/-HUGE_VALL
. Znaménko odpovídá znaménku HUGE_VALL
hodnoty, kterou nelze reprezentovat. strtold
vrátí hodnotu 0, pokud nelze provést žádný převod nebo dojde k podtečení.
wcstold
vrátí hodnoty analogicky k strtold
. U obou funkcí je nastaveno, errno
jestli dojde k ERANGE
přetečení nebo podtečení, a vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru.
Další informace o návratových kódech naleznete v tématu errno
, _doserrno
, _sys_errlist
a _sys_nerr
.
Poznámky
Každá funkce převede vstupní řetězec strSource
na .long double
Funkce strtold
přestane číst řetězec strSource
na prvním znaku, který nedokáže rozpoznat jako součást čísla. Může se jednat o ukončující znak null. Verze širokého znaku strtold
je wcstold
; její strSource
argument je řetězec širokého znaku. Jinak se tyto funkce chovají stejně.
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ý |
---|---|---|---|
_tcstold |
strtold |
strtold |
wcstold |
_tcstold_l |
_strtold_l |
_strtold_l |
_wcstold_l |
Nastavení LC_NUMERIC
kategorie aktuálního národního prostředí určuje rozpoznávání znaku radix v strSource
. Další informace naleznete v tématu setlocale
, _wsetlocale
. Funkce bez přípony _l
používají aktuální národní prostředí _strtold_l
a _wcstold_l
jsou shodné _strtold
s národním prostředím a _wcstold
s tím rozdílem, že místo toho používají předaný národní prostředí. Další informace naleznete v tématu Národní prostředí.
Pokud endptr
není NULL
, je ukazatel na znak, který zastavil kontrolu, uložen v umístění, na které odkazuje endptr
. Pokud nelze provést žádný převod (nebyly nalezeny žádné platné číslice nebo byla zadána neplatná základna), hodnota strSource
je uložena v umístění, na které odkazuje endptr
.
strtold
strSource
očekává, že odkazuje na řetězec následujícího formuláře:
[
whitespace
][sign
][digits
][.digits
] [{d
e
D
| |E
| }[sign
]]digits
Může whitespace
se skládat ze znaků mezery a tabulátoru, které jsou ignorovány; sign
je buď plus (+
) nebo minus (-
), a digits
jsou jedna nebo více desetinných číslic. 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í.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
strtold , _strtold_l |
<stdlib.h> |
wcstold , _wcstold_l |
<stdlib.h> nebo <wchar.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// crt_strtold.c
// Build with: cl /W4 /Tc crt_strtold.c
// This program uses strtold to convert a
// string to a long double-precision value.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *string;
char *stopstring;
long double x;
string = "3.1415926535898This stopped it";
x = strtold(string, &stopstring);
printf("string = %s\n", string);
printf(" strtold = %.13Lf\n", x);
printf(" Stopped scan at: %s\n\n", stopstring);
}
string = 3.1415926535898This stopped it
strtold = 3.1415926535898
Stopped scan at: This stopped it
Viz také
Konverze dat
Podpora pro matematiku a plovoucí desetinou čárku
Interpretace vícebajtových sekvencí znaků
Národní prostředí
Funkce řetězcových k číselným hodnotám
strtod
, _strtod_l
, , wcstod
_wcstod_l
strtol
, wcstol
, , _strtol_l
_wcstol_l
strtoul
, _strtoul_l
, , wcstoul
_wcstoul_l
atof
, _atof_l
, , _wtof
_wtof_l
localeconv
_create_locale
, _wcreate_locale
_free_locale