Sdílet prostřednictvím


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 doubles 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_errlista _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.

strtoldstrSource očekává, že odkazuje na řetězec následujícího formuláře:

[whitespace][sign][digits][.digits] [{deD | | 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, 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í.

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