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
    Klicken Sie auf NULL endende Zeichenfolge zu konvertieren.

  • endptr
    Zeiger auf Zeichen, das die Überprüfung beendet.

  • locale
    Das zu verwendende Gebietsschema.

Rückgabewert

strtod gibt den Wert einer Gleitkommazahl zurück, es sei denn, die Darstellung als einem Überlauf führen würde, in diesem Fall die Funktion +/-HUGE_VALzurückkehrt.Das Zeichen aus HUGE_VAL entspricht dem Zeichen des Werts ab, der nicht dargestellt werden kann.strtod gibt 0 zurück, wenn keine Konvertierung durchgeführt werden kann, oder Unterlauf auftritt.

wcstod gibt Werte analog zu strtodzurück.Für beide Funktionen zu errno wird, wenn ERANGE oder Unterlauf Überlauf auftritt und der ungültige Parameter Handler aufgerufen wird (siehe Beschreibung Parametervalidierungfestgelegt.

Weitere Informationen finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr Weitere Informationen zu diesem und anderen Rückgabecodes.

Hinweise

Jede Funktion konvertiert die Eingabezeichenfolge nptr zu double.Die strtod-Funktion konvertiert nptr in einen Wert mit doppelter Genauigkeit.strtod abgebrochen, nptr am ersten Zeichen der Zeichenfolge zu lesen, das sie nicht als Teil einer Zahl erkennen kann.Dies ist möglicherweise NULL.wcstod ist eine Breitzeichen-Version von strtod. handeln nptr-Argument ist eine Zeichenfolge mit Breitzeichen.Diese Funktionen verhalten sich ansonsten unterscheiden.

Zuweisung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definieren

_UNICODE definiert

_tcstod

strtod

strtod

wcstod

_tcstod_l

_strtod_l

_strtod_l

_wcstod_l

Die LC_NUMERIC Kategorieeinstellung des aktuellen Gebietsschemas bestimmt Erkennung des Basis Signierung in nptr*.* Weitere Informationen finden Sie unter setlocale.Die Funktionen ohne das Suffix verwenden _l dem aktuellen Gebietsschema. _strtod_l ist mit _strtod_l identisch, mit der Ausnahme, dass sie verwenden Sie stattdessen das Gebietsschema, das übergeben wird.Weitere Informationen finden Sie unter Gebietsschema.

Wenn endptr nicht NULList, wird ein Zeiger auf das Zeichen, das die Überprüfung beendet wurde, am Speicherort gespeichert, der durch endptrdargestellt wird.Wenn keine Konvertierung ausgeführt werden kann (keine gültigen Ziffern gefunden wurden, oder eine ungültige Basis) angegeben wurde, wird der Wert von nptr am Speicherort gespeichert, der durch endptrdargestellt wird.

strtod erwartet nptr , zu einer Zeichenfolge im folgenden Format zu veranschaulichen:

[whitespace] [sign] [digits] [.digits] [ {d | D | e | E}[sign]digits]

whitespace besteht möglicherweise Leerzeichen, Tabstoppzeichen und die ignoriert werden. sign ist entweder+(plus) oder - (–). digits sind und eine oder mehrere Dezimalstellen.Wenn keine Ziffern vor der Basis von Zeichen angezeigt werden, muss mindestens nach dem Basis Zeichen vorkommen.Die Dezimalstellen können von einem Exponenten Einführung folgen einem Brief (d, D, eoder E) und optional eine ganze Zahl mit Vorzeichen besteht.Wenn weder ein Exponenten immer noch Bestandteil eines Basis Zeichen angezeigt wird, wird ein Basis wird angenommen, dass der letzte Ziffer in der Zeichenfolge zu befolgen.Das erste Zeichen, das nicht das Formular passt, beendet die Überprüfung.

Anforderungen

Routine

Erforderlicher Header

strtod, _strtod_l

<stdlib.h>

wcstod, _wcstod_l

<stdlib.h> oder <wchar.h>

Um Kompatibilität zusätzlichen Informationen 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 Mehrbytezeichen-Sequenzen

Gebietsschema

Zeichenfolge mit den Funktionen des numerischen Werts

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