Udostępnij za pośrednictwem


strtod, _strtod_l, wcstod, _wcstod_l

Konwersji ciągów znaków do wartości o podwójnej precyzji.

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
);

Parametry

  • nptr
    Ciąg zakończony zerem, aby przekonwertować.

  • endptr
    Wskaźnik myszy na znak, który zatrzymuje skanowanie.

  • locale
    Ustawienia regionalne, aby użyć.

Wartość zwracana

strtodZwraca wartość liczby zmiennoprzecinkowe, z wyjątkiem przypadków, gdy przedstawienie spowodowałoby przepełnienie, w którego przypadku funkcja zwraca +/ –HUGE_VAL.Znak HUGE_VAL dopasowuje znak wartości, która nie może być przedstawiona.strtodZwraca wartość 0, jeśli można wykonać bez konwersji lub niedopełnienie występuje.

wcstodZwraca wartości analogiczne do strtod.Dla obu funkcji errno jest ustawiona na ERANGE Jeśli występuje przepełnienie lub niedomiar i wywoływana jest funkcja obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.

Zobacz _doserrno, errno, _sys_errlist i _sys_nerr Aby uzyskać więcej informacji na temat tego i innych kodów powrotu.

Uwagi

Każda funkcja konwertuje ciąg wejściowy nptr do double.strtod Działać konwertuje nptr do wartości o podwójnej precyzji.strtodZatrzymuje czytanie ciąg nptr na pierwszy znak nie jest rozpoznawana jako część numeru.Może to być kończącego znaku null.wcstodjest to wersja szerokich znaków strtod; jego nptr argument jest łańcuch szerokich znaków.Te funkcje działają identycznie inaczej.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rutynowe H

_UNICODE & Nie zdefiniowano _MBCS

_MBCS, definicja

_UNICODE, definicja

_tcstod

strtod

strtod

wcstod

_tcstod_l

_strtod_l

_strtod_l

_wcstod_l

LC_NUMERIC Kategorii ustawienie bieżące ustawienia regionalne określa rozpoznawania znaków radix w nptr*;* uzyskać więcej informacji, zobacz setlocale.Funkcje bez _l sufiks Użyj bieżącego ustawienia regionalne; _strtod_ljest taka sama, jak _strtod_l z wyjątkiem, że używają oni przekazany zamiast ustawień regionalnych.Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.

Jeśli endptr nie jest NULL, wskaźnik do znaku, którego praca została zatrzymana skanowania jest przechowywany w lokalizacji wskazywanej przez endptr.Jeśli można wykonać bez konwersji (nie znaleziono żadnych prawidłowych cyfr lub określono nieprawidłowy base), wartość nptr jest przechowywany w lokalizacji wskazywanej przez endptr.

strtodoczekuje, że nptr wskaż ciąg następującą postać:

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

A whitespace może składać się ze znaków spacji i tabulatora, które są ignorowane; signjest albo plus (+) lub minus (–); i digits są jeden lub więcej cyfr dziesiętnych.Jeśli nie cyfr pojawia się przed znakiem radix, co najmniej jeden musi znajdować się po znaku radix.Cyfr dziesiętnych może następować wykładniku, który składa się z listu (d, D, e, lub E) i opcjonalnie całkowita.Jeśli pojawi się część wykładniczego ani znaków radix, znak radix zakłada wykonaj ostatnią cyfrę w ciągu.Pierwszy znak, który nie mieści się ta forma zatrzymuje skanowanie.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

strtod, _strtod_l

<stdlib.h>

wcstod, _wcstod_l

<stdlib.h> lub <wchar.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Przykład

// 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 );
   }
}
  

Odpowiednik w programie .NET Framework

System::CONVERT::ToDouble

Zobacz też

Informacje

Konwersja danych

Wsparcie zmiennoprzecinkowe

Interpretacja sekwencje znaków wielobajtowych

Ustawienia regionalne

Ciąg znaków numerycznych wartości funkcji

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