strtof
, , _strtof_l
wcstof
_wcstof_l
Konvertiert eine Zeichenfolge in einen Gleitkommawert mit einfacher Genauigkeit.
Syntax
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
);
Parameter
strSource
Zu konvertierende mit NULL endende Zeichenfolge.
endptr
Zeiger auf das Zeichen, das die Überprüfung stoppt.
locale
Das zu verwendende Gebietsschema.
Rückgabewert
strtof
gibt den Wert der Gleitkommazahl zurück, außer wenn die Darstellung einen Überlauf verursachen würde, in diesem Fall gibt die Funktion +/-zurückHUGE_VALF
. Das Vorzeichen entspricht HUGE_VALF
dem Vorzeichen des Werts, der nicht dargestellt werden kann. strtof
gibt 0 zurück, wenn keine Konvertierung ausgeführt werden kann oder ein Unterlauf auftritt.
wcstof
gibt Werte analog zu strtof
zurück. Bei beiden Funktionen wird festgelegtERANGE
, errno
ob Überlauf oder Unterlauf auftritt und der ungültige Parameterhandler aufgerufen wird, wie in der Parameterüberprüfung beschrieben.
Weitere Informationen zu Rückgabecodes finden Sie unter , , _doserrno
, _sys_errlist
und _sys_nerr
.errno
Hinweise
Jede Funktion wandelt die Eingabezeichenfolge strSource
in einen float
-Wert um. Die strtof
-Funktion konvertiert strSource
in einen Wert mit einfacher Genauigkeit. strtof
beendet das Lesen der Zeichenfolge strSource
am ersten Zeichen, das nicht als Teil einer Zahl erkannt werden kann. Dieses Zeichen kann das endende Nullzeichen sein. wcstof
ist eine Breitzeichenversion von strtof
. Das dazugehörige strSource
-Argument ist eine Breitzeichenfolge. Ansonsten verhalten sich diese Funktionen identisch.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
TCHAR.H-Routine | _UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tcstof |
strtof |
strtof |
wcstof |
_tcstof_l |
_strtof_l |
_strtof_l |
_wcstof_l |
Die LC_NUMERIC
Kategorieeinstellung des aktuellen Gebietsschemas bestimmt die Erkennung des Radixzeichens in strSource
; weitere Informationen finden Sie unter setlocale
, _wsetlocale
. Die Funktionen ohne _l
-Suffix verwenden das aktuelle Gebietsschema; diejenigen ohne das Suffix sind beinahe identisch, verwenden jedoch stattdessen den übergebenen Gebietsschemaparameter. Weitere Informationen finden Sie unter Locale.
Wenn endptr
nicht NULL
, wird ein Zeiger auf das Zeichen, das den Scan beendet hat, an der Stelle gespeichert, auf endptr
die verwiesen wird. Wenn keine Konvertierung ausgeführt werden kann (keine gültigen Ziffern gefunden oder ungültige Basis angegeben), wird der Wert von strSource
an dem Speicherort gespeichert, auf den von endptr
gezeigt wird.
strtof
erwartet, dass strSource
auf eine Zeichenfolge der folgenden Form zeigt:
[] [whitespace
] [sign
] [] [digits
][.] [.digits
] [{e
| E
} [sign
] digits
]
whitespace
besteht möglicherweise aus Leerzeichen und Tabulatorzeichen, die ignoriert werden; sign
ist entweder Pluszeichen (+
) oder Minuszeichen (-
); und digits
sind eine oder mehrere Dezimalstellen. Wenn keine Ziffern vor dem Basiszeichen stehen, muss mindestens eine Ziffer nach dem Basiszeichen stehen. Auf die Dezimalstellen kann ein Exponent folgen, der aus einem einführenden Buchstaben (e
oder E
) und einer Zahl mit optionalem Vorzeichen besteht. Wenn kein exponentischer Teil oder radix-Zeichen angezeigt wird, wird davon ausgegangen, dass der letzten Ziffer in der Zeichenfolge ein Radixzeichen folgt. Das erste Zeichen, das nicht in dieses Formular passt, beendet den Scan.
Die UCRT-Versionen dieser Funktionen unterstützen keine Konvertierung von Fortran-Formaten (d
oder D
) Exponentenbuchstaben. Diese nicht-standardmäßige Erweiterung wurde in früheren Versionen des CRT unterstützt. Sie ist möglicherweise eine unterbrechende Änderung für Ihren Code.
Anforderungen
Routine | Erforderlicher Header |
---|---|
strtof , _strtof_l |
C: stdlib.h> C++: <<cstdlib> oder <stdlib.h> |
wcstof , _wcstof_l |
C: stdlib.h> oder <wchar.h> C++: <<cstdlib>, <stdlib.h> oder <wchar.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// 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
Siehe auch
Datenkonvertierung
Mathematische Unterstützung und Gleitkommaunterstützung
Interpretation von Multibytezeichensequenzen
Gebietsschema
Zeichenfolge zu numerischen Wertfunktionen
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