Udostępnij za pośrednictwem


strtod, _strtod_l, wcstod, _wcstod_l

Konwersji ciągów znaków na wartość 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 do przekonwertowania.

  • endptr
    Wskaźnik znaku zatrzymującego skanowanie.

  • locale
    Ustawienia regionalne do użycia.

Wartość zwracana

Funkcja strtod zwraca wartość zmiennoprzecinkową, z wyjątkiem przypadków, gdy ta reprezentacja spowodowałoby przepełnienie, kiedy to funkcja zwraca wartość +/ –HUGE_VAL.Znak wartości HUGE_VAL odpowiada znakowi wartości, która nie może zostać przedstawiona.Funkcja strtod zwraca wartość 0, jeśli nie można wykonać konwersji lub występuje niedopełnienie.

wcstod zwraca wartości analogicznie do strtod.Dla obu funkcji atrybut errno jest ustawiony na ERANGE, jeśli występuje przepełnienie lub niedopełnienie i jest wywoływany nieprawidłowy program obsługi parametrów, zgodnie z opisem w temacie Sprawdzanie poprawności parametru.

Zobacz _doserrno, numer błędu, _sys_errlist i _sys_nerr uzyskać więcej informacji na ten temat i inne kody zwrotne.

Uwagi

Każda funkcja konwertuje ciąg wejściowy nptr do double.strtod Funkcja konwertuje nptr na wartość o podwójnej precyzji.Funkcja strtod przestaje odczytywać ciąg nptr przy pierwszym znaku, którego nie może rozpoznać jako elementu liczby.Może to być zakończone znakiem null.wcstod to wersja znaku dwubajtowego strtod; jej argument nptr jest ciągiem znaku dwubajtowego.W innych przypadkach funkcje te zachowują się identycznie.

Rutynowe mapowania zwykłego tekstu

Procedura Tchar.h

_UNICODE & _MBCS nie zdefiniowano

_MBCS zdefiniowano

_UNICODE zdefiniowany

_tcstod

strtod

strtod

wcstod

_tcstod_l

_strtod_l

_strtod_l

_wcstod_l

LC_NUMERIC Kategorii z bieżących ustawień regionalnych, decydują rozpoznawania znaków radix w nptr*;* uzyskać więcej informacji, zobacz setlocale.Funkcje bez _l sufiks użyć bieżących ustawień regionalnych; _strtod_l jest identyczny z _strtod_l z tym, że używają oni regionalne przekazany w zamian.Aby uzyskać więcej informacji, zobacz Regionalne.

Jeśli endptr nie jest NULL, wskaźnik znaku, który zatrzymał skanowanie jest przechowywany w lokalizacji wskazywanej przez endptr.Jeśli konwersja nie może być wykonywana (nie znaleziono żadnych prawidłowych cyfr lub określono nieprawidłową podstawę), wartość nptr jest przechowywana w lokalizacji wskazywanej przez endptr.

Funkcja strtod oczekuje, że parametr nptr wskaże ciąg o następującej postaci:

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

whitespace może składać się ze znaków spacji lub tabulatora, które są ignorowane; sign to plus (+) lub minus (–); a digits jedna lub więcej cyfr dziesiętnych.Jeśli żadna cyfra pojawia się przed znakiem podstawy, co najmniej jedna musi być umieszczona po znaku podstawy.Po cyfrach dziesiętnych może następować wykładnik, który składa się z litery wprowadzającej (d, D, e lub E) i opcjonalnie liczby całkowitej ze znakiem.Jeśli wykładnik ani znak podstawy nie pojawia się, przyjmuje się, że znak podstawy następuje po ostatniej cyfrze w ciągu.Pierwszy znak, który nie mieści się w tym formularzu zatrzymuje skanowanie.

Wymagania

Procedura

Wymagany nagłówek

strtod, _strtod_l

<stdlib.h>

wcstod, _wcstod_l

<stdlib.h> lub <wchar.h>

Dodatkowe informacje o zgodności – zobacz: Zgodność 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

Obsługa liczb zmiennoprzecinkowych

Interpretacja wielobajtowych sekwencji znaków

Regionalne

Konwertowanie ciągów na wartości

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