Freigeben über


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

System::Convert::ToDouble

Siehe auch

Referenz

Datenkonvertierung

Gleitkommaunterstützung

Interpretation von Mehrbytezeichensequenzen

Locale

Funktionen zur Konvertierung von Zeichenfolgen in numerische Werte

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