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
Zobacz też
Informacje
Obsługa liczb zmiennoprzecinkowych
Interpretacja wielobajtowych sekwencji znaków
Konwertowanie ciągów na wartości
strtol, wcstol, _strtol_l, _wcstol_l
strtoul, _strtoul_l, wcstoul, _wcstoul_l