strtof
, , _strtof_l
, , wcstof
_wcstof_l
Konwertuje ciągi na wartość zmiennoprzecinkową o pojedynczej precyzji.
Składnia
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
Ciąg zakończony wartością null do konwersji.
endptr
Wskaźnik do znaku, który zatrzymuje skanowanie.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
strtof
Zwraca wartość liczby zmiennoprzecinkowej, z wyjątkiem sytuacji, gdy reprezentacja spowoduje przepełnienie, w tym przypadku funkcja zwraca wartość +/-HUGE_VALF
. Znak HUGE_VALF
odpowiada znakowi wartości, która nie może być reprezentowana. strtof
Zwraca wartość 0, jeśli nie można wykonać konwersji lub występuje podpływ.
wcstof
zwraca wartości analogicznie do strtof
. Dla obu funkcji errno
jest ustawiona wartość ERANGE
, jeśli występuje przepełnienie lub niedopełnienie, a wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów.
Aby uzyskać więcej informacji na temat kodów zwracanych, zobacz errno
, _doserrno
, _sys_errlist
i _sys_nerr
.
Uwagi
Każda funkcja konwertuje ciąg strSource
wejściowy na float
wartość . Funkcja strtof
konwertuje strSource
na wartość o pojedynczej precyzji. strtof
zatrzymuje odczytywanie ciągu strSource
przy pierwszym znaku, który nie może rozpoznać jako części liczby. Ten znak może być znakiem zerowym zakończenia. wcstof
jest wersją szerokoznakową ; strtof
jego strSource
argument jest ciągiem o szerokim znaku. W przeciwnym razie te funkcje zachowują się identycznie.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
Procedura TCHAR.H | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tcstof |
strtof |
strtof |
wcstof |
_tcstof_l |
_strtof_l |
_strtof_l |
_wcstof_l |
Ustawienie LC_NUMERIC
kategorii bieżących ustawień regionalnych określa rozpoznawanie znaku promieniowego w elemencie strSource
; aby uzyskać więcej informacji, zobacz setlocale
, _wsetlocale
. Funkcje, które nie mają sufiksu _l
, używają bieżących ustawień regionalnych; te, które mają sufiks, są identyczne, z tą różnicą, że używają ustawień regionalnych przekazanych zamiast. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.
Jeśli endptr
nie NULL
jest , wskaźnik do znaku, który zatrzymał skanowanie, jest przechowywany w lokalizacji wskazywanej przez endptr
. Jeśli nie można wykonać konwersji (nie znaleziono prawidłowych cyfr lub określono nieprawidłową bazę), wartość strSource
jest przechowywana w lokalizacji wskazywanej przez endptr
.
strtof
strSource
oczekuje wskazywania ciągu następującego formularza:
[whitespace
] [sign
] [digits
] [.digits
] [] [{e
| E
} [sign
] digits
]
Element whitespace
może składać się z spacji i znaków tabulacji, które są ignorowane; sign
jest plus (+
) lub minus (-
); i digits
są co najmniej jedną cyfrą dziesiętną. Jeśli żadne cyfry nie są wyświetlane przed znakiem promienia, co najmniej jeden musi pojawić się po znaku promieniowym. Cyfry dziesiętne mogą być następnie wykładnikiem, który składa się z litery wprowadzającej (e
lub E
) i opcjonalnie podpisanej liczby całkowitej. Jeśli nie pojawia się żadna część wykładnicza lub znak promienia, przyjmuje się, że znak promienia jest obserwowany po ostatniej cyfrze w ciągu. Pierwszy znak, który nie pasuje do tego formularza, zatrzymuje skanowanie.
Wersje UCRT tych funkcji nie obsługują konwersji liter wykładniczych typu Fortran (d
lub D
). To niestandardowe rozszerzenie było obsługiwane przez wcześniejsze wersje CRT i może być zmianą powodującą niezgodność dla kodu.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
strtof , _strtof_l |
C: <stdlib.h> C++: <cstdlib> lub <stdlib.h> |
wcstof , _wcstof_l |
C: <stdlib.h lub <wchar.h>> C++: <cstdlib>, <stdlib.h> lub <wchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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
Zobacz też
Konwersja danych
Obsługa obliczeń matematycznych i zmiennoprzecinkowych
Interpretacja sekwencji znaków wielobajtowych
ustawienia regionalne
Funkcje ciąg-wartość liczbowa
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