Freigeben über


strtold, , _strtold_lwcstold_wcstold_l

Konvertiert eine Zeichenfolge in einen Gleitkommawert mit langer doppelter Genauigkeit.

Syntax

long double strtold(
   const char *strSource,
   char **endptr
);
long double _strtold_l(
   const char *strSource,
   char **endptr,
   _locale_t locale
);
long double wcstold(
   const wchar_t *strSource,
   wchar_t **endptr
);
long double wcstold_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

strtold gibt den Wert der Gleitkommazahl als Eine long doublezurück, außer wenn die Darstellung einen Überlauf verursachen würde – in diesem Fall gibt die Funktion +/-zurückHUGE_VALL. Das Vorzeichen entspricht HUGE_VALL dem Vorzeichen des Werts, der nicht dargestellt werden kann. strtold gibt 0 zurück, wenn keine Konvertierung ausgeführt werden kann oder ein Unterlauf auftritt.

wcstold gibt Werte analog zu strtold 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_errlistund _sys_nerr.errno

Hinweise

Jede Funktion wandelt die Eingabezeichenfolge strSource in einen long double-Wert um. Die strtold Funktion beendet das Lesen der Zeichenfolge strSource am ersten Zeichen, das nicht als Teil einer Zahl erkannt werden kann. Dies kann das endende Nullzeichen sein. Die Breitzeichenversion von strtold ist wcstold. 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
_tcstold strtold strtold wcstold
_tcstold_l _strtold_l _strtold_l _wcstold_l

Die LC_NUMERIC-Kategorieneinstellung des aktuellen Gebietsschemas bestimmt das Erkennen des Basiszeichens in strSource. Weitere Informationen finden Sie unter setlocale, _wsetlocaleverwalten. Die Funktionen ohne das _l-Suffix verwenden das aktuelle Gebietsschema. _strtold_l und _wcstold_l sind mit _strtold und _wcstold nahezu identisch, verwenden jedoch das übergebene Gebietsschema. 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 endptrdie 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.

strtold erwartet, dass strSource auf eine Zeichenfolge der folgenden Form zeigt:

[][signwhitespace][][digits][.digits] [{deD | | 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 (d, D, e oder E) und einer optional Zahl mit 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.

Anforderungen

Routine Erforderlicher Header
strtold, _strtold_l <stdlib.h>
wcstold, _wcstold_l <stdlib.h> oder <wchar.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

// crt_strtold.c
// Build with: cl /W4 /Tc crt_strtold.c
// This program uses strtold to convert a
// string to a long double-precision value.

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char *string;
   char *stopstring;
   long double x;

   string = "3.1415926535898This stopped it";
   x = strtold(string, &stopstring);
   printf("string = %s\n", string);
   printf("   strtold = %.13Lf\n", x);
   printf("   Stopped scan at: %s\n\n", stopstring);
}
string = 3.1415926535898This stopped it
   strtold = 3.1415926535898
   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_lwcstod_wcstod_l
strtol, , wcstol_strtol_l_wcstol_l
strtoul, , _strtoul_lwcstoul_wcstoul_l
atof, , _atof_l_wtof_wtof_l
localeconv
_create_locale, _wcreate_locale
_free_locale