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
Zobacz też
Informacje
Interpretacja sekwencje znaków wielobajtowych
Ciąg znaków numerycznych wartości funkcji
strtol, wcstol, _strtol_l, _wcstol_l
strtoul, _strtoul_l, wcstoul, _wcstoul_l