strtold
, _strtold_l
, wcstold
, _wcstold_l
Konwertuje ciągi na długą wartość zmiennoprzecinkową o podwójnej precyzji.
Składnia
long double strtold(
const char *strSource,
char **endptr
);
long double _strtold_l(
const char *strSource,
char **endptr,
_locale_t locale
);
long double wcstold(
const wchar_t *strSource,
wchar_t **endptr
);
long double wcstold_l(
const wchar_t *strSource,
wchar_t **endptr,
_locale_t locale
);
Parametry
strSource
Ciąg zakończony wartością null do konwersji.
endptr
Wskaźnik do znaku, który zatrzymuje skanowanie.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
strtold
Zwraca wartość liczby zmiennoprzecinkowej jako long double
, z wyjątkiem sytuacji, gdy reprezentacja spowoduje przepełnienie — w tym przypadku funkcja zwraca wartość +/-HUGE_VALL
. Znak HUGE_VALL
odpowiada znakowi wartości, która nie może być reprezentowana. strtold
Zwraca wartość 0, jeśli nie można wykonać konwersji lub występuje podpływ.
wcstold
zwraca wartości analogicznie do strtold
. Dla obu funkcji errno
jest ustawiona wartość ERANGE
, jeśli występuje przepełnienie lub niedopełnienie, a wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów.
Aby uzyskać więcej informacji na temat kodów zwracanych, zobacz errno
, _doserrno
, _sys_errlist
i _sys_nerr
.
Uwagi
Każda funkcja konwertuje ciąg strSource
wejściowy na long double
wartość . Funkcja strtold
zatrzymuje odczytywanie ciągu strSource
przy pierwszym znaku, który nie może rozpoznać jako części liczby. Może to być znak zerowy zakończenia. Wersja znaków szerokiego znaku strtold
to wcstold
; jego strSource
argument jest ciągiem o szerokim znaku. W przeciwnym razie te funkcje zachowują się identycznie.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
Procedura TCHAR.H | _UNICODE i _MBCS niezdefiniowane |
_MBCS Zdefiniowane |
_UNICODE Zdefiniowane |
---|---|---|---|
_tcstold |
strtold |
strtold |
wcstold |
_tcstold_l |
_strtold_l |
_strtold_l |
_wcstold_l |
Ustawienie LC_NUMERIC
kategorii bieżącego ustawienia regionalnego określa rozpoznawanie znaku promienia w elemencie strSource
. Aby uzyskać więcej informacji, zobacz setlocale
, _wsetlocale
. Funkcje bez sufiksu _l
używają bieżących ustawień regionalnych i _strtold_l
_wcstold_l
są identyczne z _strtold
ustawieniami regionalnymi i _wcstold
z tą różnicą, że zamiast tego używają ustawień regionalnych, które są przekazywane. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.
Jeśli endptr
nie NULL
jest , wskaźnik do znaku, który zatrzymał skanowanie, jest przechowywany w lokalizacji wskazywanej przez endptr
. Jeśli nie można wykonać konwersji (nie znaleziono prawidłowych cyfr lub określono nieprawidłową bazę), wartość strSource
jest przechowywana w lokalizacji wskazywanej przez endptr
.
strtold
strSource
oczekuje wskazywania ciągu następującego formularza:
[
whitespace
][sign
][digits
][.digits
] [{d
|D
|e
|E
}[sign
]digits
]
Element whitespace
może składać się z spacji i znaków tabulacji, które są ignorowane; sign
jest plus (+
) lub minus (-
); i digits
są co najmniej jedną cyfrą dziesiętną. Jeśli żadne cyfry nie są wyświetlane przed znakiem promienia, co najmniej jeden musi pojawić się po znaku promieniowym. Cyfry dziesiętne mogą być następnie wykładnikiem, który składa się z litery wprowadzającej (d
, D
, e
lub E
) i opcjonalnie podpisanej liczby całkowitej. Jeśli nie pojawia się żadna część wykładnicza lub znak promienia, przyjmuje się, że znak promienia jest obserwowany po ostatniej cyfrze w ciągu. Pierwszy znak, który nie pasuje do tego formularza, zatrzymuje skanowanie.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
strtold , _strtold_l |
<stdlib.h> |
wcstold , _wcstold_l |
<stdlib.h> lub <wchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// crt_strtold.c
// Build with: cl /W4 /Tc crt_strtold.c
// This program uses strtold to convert a
// string to a long double-precision value.
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char *string;
char *stopstring;
long double x;
string = "3.1415926535898This stopped it";
x = strtold(string, &stopstring);
printf("string = %s\n", string);
printf(" strtold = %.13Lf\n", x);
printf(" Stopped scan at: %s\n\n", stopstring);
}
string = 3.1415926535898This stopped it
strtold = 3.1415926535898
Stopped scan at: This stopped it
Zobacz też
Konwersja danych
Obsługa obliczeń matematycznych i zmiennoprzecinkowych
Interpretacja sekwencji znaków wielobajtowych
ustawienia regionalne
Funkcje ciąg-wartość liczbowa
strtod
, _strtod_l
, wcstod
, _wcstod_l
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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla