Udostępnij przez


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_errlisti _sys_nerr.

Uwagi

Każda funkcja konwertuje ciąg strSource wejściowy na floatwartość . 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ą ; strtofjego 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 Zdefiniowane _UNICODE Zdefiniowane
_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 NULLjest , 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.

strtofstrSource 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