strtod, _strtod_l, wcstod, _wcstod_l
Konvertieren von Zeichenfolgen in einen Wert mit doppelter Genauigkeit.
double strtod(
const char *nptr,
char **endptr
);
double _strtod_l(
const char *nptr,
char **endptr,
_locale_t locale
);
double wcstod(
const wchar_t *nptr,
wchar_t **endptr
);
double wcstod_l(
const wchar_t *nptr,
wchar_t **endptr,
_locale_t locale
);
Parameter
nptr
Zu konvertierende mit NULL endende Zeichenfolge.endptr
Zeiger auf ein Zeichen, mit dem die Überprüfung beendet wird.locale
Das zu verwendende Gebietsschema.
Rückgabewert
strtod gibt den Wert der Gleitkommazahl zurück, ausgenommen, die Darstellung führt zu einem Überlauf. In diesem Fall gibt die Funktion +/-HUGE_VAL zurück. Das Zeichen von HUGE_VAL entspricht dem Zeichen des Werts, der nicht angezeigt werden kann. strtod gibt 0 zurück, wenn keine Konvertierung ausgeführt werden kann oder ein Unterlauf auftritt.
wcstod gibt Werte analog zu strtod zurück. errno wird für beide Funktionen auf ERANGE gesetzt, wenn ein Überlauf oder ein Unterlauf auftritt und der Handler für ungültige Parameter aufgerufen wird, wie in Parametervalidierung beschrieben.
Siehe _doserrno, errno, _sys_errlist und _sys_nerr weitere Informationen über diese und andere. Rückgabecodes
Hinweise
Jede Funktion wandelt die Eingabezeichenfolge nptr in einen double-Wert um. Die strtod-Funktion konvertiert nptr in einen Wert mit doppelter Genauigkeit. strtod stoppt das Lesen der nptr-Zeichenfolge beim ersten Zeichen, das nicht als Teil einer Zahl erkannt wird. Dies ist möglicherweise das beendende NULL-Zeichen. wcstod ist eine Breitzeichenversion von strtod. Das dazugehörige nptr-Argument ist eine Breitzeichenfolge. Anderenfalls verhalten sich diese Funktionen identisch.
Zuordnung generischer Textroutinen
TCHAR.H-Routine |
_UNICODE & _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tcstod |
strtod |
strtod |
wcstod |
_tcstod_l |
_strtod_l |
_strtod_l |
_wcstod_l |
Die LC_NUMERIC Kategorieneinstellung des aktuellen Gebietsschemas bestimmt Erkennung des Basiszeichen in nptr*;* Weitere Informationen finden Sie unter setlocale. Die Features ohne das Suffix _l verwenden das aktuelle Gebietsschema; _strtod_l ist mit _strtod_l identisch, allerdings verwenden das Gebietsschema, das ein- stattdessen übergeben wird. Weitere Informationen finden Sie unter Locale.
Wenn endptr nicht NULL ist, wird ein Zeiger auf das Zeichen, das die Überprüfung beendet hat, an dem Ort gespeichert, auf den durch endptr gezeigt wird. Wenn keine Konvertierung ausgeführt werden kann (keine gültigen Ziffern gefunden oder ungültige Basis angegeben), wird der Wert von nptr an dem Speicherort gespeichert, auf den durch endptr gezeigt wird.
strtod erwartet, dass nptr auf eine Zeichenfolge der folgenden Form zeigt:
[whitespace] [sign] [digits] [.digits] [ {d | D | e | E}[sign]digits]
whitespace besteht möglicherweise aus Leerzeichen und Tabulatorzeichen, die ignoriert werden; sign ist entweder Pluszeichen (+) oder Minuszeichen (–); and 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 (d, D, e oder E) und einer optional Zahl mit Vorzeichen besteht. Wenn weder ein Exponententeil noch ein Basiszeichen angezeigt wird, wird davon ausgegangen, dass ein Basiszeichen auf die letzte Ziffer in der Zeichenfolge folgt. Das erste Zeichen, das dieser Form nicht entspricht, beendet die Überprüfung.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
strtod, _strtod_l |
<stdlib.h> |
wcstod, _wcstod_l |
<stdlib.h> oder <wchar.h> |
Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.
Beispiel
// crt_strtod.c
// This program uses strtod to convert a
// string to a double-precision value; strtol to
// convert a string to long integer values; and strtoul
// to convert a string to unsigned long-integer values.
//
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *string, *stopstring;
double x;
long l;
int base;
unsigned long ul;
string = "3.1415926This stopped it";
x = strtod( string, &stopstring );
printf( "string = %s\n", string );
printf(" strtod = %f\n", x );
printf(" Stopped scan at: %s\n\n", stopstring );
string = "-10110134932This stopped it";
l = strtol( string, &stopstring, 10 );
printf( "string = %s\n", string );
printf(" strtol = %ld\n", l );
printf(" Stopped scan at: %s\n\n", stopstring );
string = "10110134932";
printf( "string = %s\n", string );
// Convert string using base 2, 4, and 8:
for( base = 2; base <= 8; base *= 2 )
{
// Convert the string:
ul = strtoul( string, &stopstring, base );
printf( " strtol = %ld (base %d)\n", ul, base );
printf( " Stopped scan at: %s\n", stopstring );
}
}
.NET Framework-Entsprechung
Siehe auch
Referenz
Interpretation von Mehrbytezeichensequenzen
Funktionen zur Konvertierung von Zeichenfolgen in numerische Werte
strtol, wcstol, _strtol_l, _wcstol_l
strtoul, _strtoul_l, wcstoul, _wcstoul_l