Udostępnij za pośrednictwem


Funkcje konwertowania ciągów na wartości

Uwagi

Każda funkcja w strto* rodzinie konwertuje ciąg zakończony wartością null na wartość liczbową. Dostępne funkcje są wymienione w poniższej tabeli.

Function opis
strtod Konwertowanie ciągu na wartość zmiennoprzecinkową o podwójnej precyzji
strtol Konwertowanie ciągu na długą liczbę całkowitą
strtoul Konwertowanie ciągu na niepodpisaną długą liczbę całkowitą
_strtoi64 Konwertowanie ciągu na 64-bitową __int64 liczbę całkowitą
_strtoui64 Konwertowanie ciągu na niepodpisaną 64-bitową __int64 liczbę całkowitą

wcstod, wcstol, wcstouli _wcstoi64 są wersjami strtodo szerokim znaku odpowiednio , strtol, strtouli _strtoi64. Argument ciągu dla każdej z tych funkcji szerokiego znaku jest ciągiem o szerokim znaku; każda funkcja zachowuje się identycznie jak w przeciwnym razie jego odpowiednik jednobajtowy.

Funkcja strtod przyjmuje dwa argumenty: pierwszy to ciąg wejściowy, a drugi wskaźnik do znaku kończącego proces konwersji. strtol_strtoi64, strtouli _strtoui64 weź trzeci argument jako bazę liczb do użycia w procesie konwersji.

Ciąg wejściowy to sekwencja znaków, które można interpretować jako wartość liczbową określonego typu. Każda funkcja zatrzymuje odczytywanie ciągu przy pierwszym znaku, który nie może rozpoznać jako części liczby. Ten znak może być znakiem zerowym zakończenia. W przypadku strtolznaków , strtoul, _strtoi64i _strtoui64ten znak zakończenia może być również pierwszym znakiem liczbowym większym lub równym bazie liczbowej podanej przez użytkownika.

Jeśli wskaźnik dostarczony przez użytkownika na znak końca konwersji nie jest ustawiony na NULL lub nullptr w czasie wywołania, wskaźnik do znaku, który zatrzymał skanowanie, zostanie tam zapisany. Jeśli nie można wykonać konwersji (nie znaleziono prawidłowych cyfr lub określono nieprawidłową bazę), wartość wskaźnika ciągu jest przechowywana pod tym adresem.

strtod oczekuje ciągu następującego formularza:

[whitespace] [] [sign] [digits] [.digits{d | D | | Ee}[sign]]digits

Element whitespace może składać się z spacji lub 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, elub 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.

Funkcje strtol, strtoul, _strtoi64i _strtoui64 oczekują ciągu następującego formularza:

[whitespace] [{+ | -}] [0 [{ x | X }]] [digits]

Jeśli argument podstawowy mieści się w zakresie od 2 do 36, jest używany jako podstawa liczby. Jeśli jest to 0, początkowe znaki, do których odwołuje się wskaźnik końca konwersji, są używane do określania podstawy. Jeśli pierwszy znak to 0, a drugi znak nie jest "x" lub "X", ciąg jest interpretowany jako liczba całkowita ósemkowa; w przeciwnym razie jest interpretowany jako liczba dziesiętna. Jeśli pierwszy znak to "0", a drugi znak to "x" lub "X", ciąg jest interpretowany jako liczba całkowita szesnastkowa. Jeśli pierwszy znak to od "1" do "9", ciąg jest interpretowany jako liczba całkowita dziesiętna. Litery "a" do "z" (lub "A" do "Z") są przypisane wartości od 10 do 35; tylko litery, których przypisane wartości są mniejsze niż base dozwolone. strtouli _strtoui64 zezwalają na prefiks znaku plus () lub minus (+-; wiodący znak minus wskazuje, że zwracana wartość jest negowana.

Na wartość wyjściową ma wpływ ustawienie LC_NUMERIC ustawienia kategorii ustawień regionalnych. Aby uzyskać więcej informacji, zobacz setlocale. Wersje tych funkcji bez sufiksu _l używają bieżących ustawień regionalnych dla tego zachowania zależnego od ustawień regionalnych. Wersje z _l sufiksem są identyczne, z tą różnicą, że używają parametru ustawień regionalnych przekazanych zamiast.

Gdy wartość zwrócona przez te funkcje spowoduje przepełnienie lub niedopełnienie lub gdy konwersja nie jest możliwa, zwracane są specjalne wartości wielkości liter, jak pokazano poniżej:

Function Stan Zwrócona wartość
strtod Przepełnienie +/- HUGE_VAL
strtod Podpełnienie lub brak konwersji 0
strtol + Przepełnienie LONG_MAX
strtol -Przepełnienie LONG_MIN
strtol Podpełnienie lub brak konwersji 0
_strtoi64 + Przepełnienie _I64_MAX
_strtoi64 -Przepełnienie _I64_MIN
_strtoi64 Brak konwersji 0
_strtoui64 Przepełnienie _UI64_MAX
_strtoui64 Brak konwersji 0

_I64_MAX, _I64_MINi _UI64_MAX są zdefiniowane w pliku <LIMITS.H>.

wcstod, , wcstolwcstoul, _wcstoi64, i _wcstoui64 są wersjami szerokiego strtodznaku , , strtoulstrtol, _strtoi64i _strtoui64, odpowiednio; wskaźnikiem do argumentu końca konwersji do każdego z tych funkcji szerokiego znaku jest ciąg o szerokim znaku. W przeciwnym razie każda z tych funkcji o szerokim znaku zachowuje się identycznie jak jego odpowiednik z pojedynczym znakiem.

Zobacz też

Konwersja danych
ustawienia regionalne
Interpretacja sekwencji znaków wielobajtowych
Obsługa obliczeń matematycznych i zmiennoprzecinkowych
atof, , _atof_l, , _wtof_wtof_l