strtof
, _strtof_l
, , wcstof
_wcstof_l
Převede řetězce na hodnotu s plovoucí desetinnou čárkou s jednou přesností.
Syntaxe
float strtof(
const char *strSource,
char **endptr
);
float _strtof_l(
const char *strSource,
char **endptr,
_locale_t locale
);
float wcstof(
const wchar_t *strSource,
wchar_t **endptr
);
float wcstof_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
strtof
vrátí hodnotu čísla s plovoucí desetinou čárkou, s výjimkou případů, kdy reprezentace způsobí přetečení, v takovém případě vrátí funkce +/-HUGE_VALF
. Znaménko odpovídá znaménku HUGE_VALF
hodnoty, kterou nelze reprezentovat. strtof
vrátí hodnotu 0, pokud nelze provést žádný převod nebo dojde k podtečení.
wcstof
vrátí hodnoty analogicky k strtof
. 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 .float
Funkce strtof
se strSource
převede na hodnotu s jednou přesností. strtof
přestane číst řetězec strSource
na prvním znaku, který nedokáže rozpoznat jako součást čísla. Tento znak může být ukončovací znak null. wcstof
je širokoznační verze strtof
; jeho 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ý |
---|---|---|---|
_tcstof |
strtof |
strtof |
wcstof |
_tcstof_l |
_strtof_l |
_strtof_l |
_wcstof_l |
Nastavení LC_NUMERIC
kategorie aktuálního národního prostředí určuje rozpoznávání znaku radixu v strSource
; další informace naleznete v tématu setlocale
, . _wsetlocale
Funkce, které nemají příponu _l
, používají aktuální národní prostředí. Ty, které mají příponu, jsou shodné s tím rozdílem, že místo toho používají národní prostředí, které se př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
.
strtof
strSource
očekává, že odkazuje na řetězec následujícího formuláře:
[whitespace
] [sign
] [digits
.] [.digits
] [{e
| 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 (e
nebo E
) a volitelně podepsaného celého čísla. 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í.
Verze těchto funkcí UCRT nepodporují převod fortran-style (d
nebo D
) exponentních písmen. Toto nestandardní rozšíření bylo podporováno dřívějšími verzemi CRT a může se jednat o zásadní změnu kódu.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
strtof , _strtof_l |
C: <stdlib.h> C++: <cstdlib> nebo <stdlib.h> |
wcstof , _wcstof_l |
C: <stdlib.h> nebo <wchar.h> C++: <cstdlib, <stdlib.h>> nebo <wchar.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// crt_strtof.c
// This program uses strtof to convert a
// string to a single-precision value.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *string;
char *stopstring;
float x;
string = "3.14159This stopped it";
x = strtof(string, &stopstring);
printf("string = %s\n", string);
printf(" strtof = %f\n", x);
printf(" Stopped scan at: %s\n\n", stopstring);
}
string = 3.14159This stopped it
strtof = 3.141590
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