strtoimax
, , _strtoimax_l
, , wcstoimax
_wcstoimax_l
Konwertuje ciąg na wartość całkowitą największego obsługiwanego typu liczby całkowitej ze znakiem.
Składnia
intmax_t strtoimax(
const char *strSource,
char **endptr,
int base
);
intmax_t wcstoimax(
const wchar_t *strSource,
wchar_t **endptr,
int base
);
intmax_t _strtoimax_l(
const char *strSource,
char **endptr,
int base,
_locale_t locale
);
intmax_t _wcstoimax_l(
const wchar_t *strSource,
wchar_t **endptr,
int base,
_locale_t locale
);
Parametry
strSource
Ciąg zakończony wartością null do konwersji.
endptr
Wskaźnik do znaku, który zatrzymuje skanowanie.
base
Podstawa liczbowa do użycia.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
strtoimax
Zwraca wartość reprezentowaną w ciągu strSource
, z wyjątkiem sytuacji, gdy reprezentacja spowoduje przepełnienie — w takim przypadku zwraca INTMAX_MAX
wartość lub INTMAX_MIN
, i errno
jest ustawiona na ERANGE
wartość . Funkcja zwraca wartość 0, jeśli nie można wykonać konwersji. wcstoimax
zwraca wartości analogicznie do strtoimax
.
INTMAX_MAX
i INTMAX_MIN
są zdefiniowane w pliku stdint.h.
Jeśli strSource
wartość jest NULL
lub base
jest niezerowa, a wartość jest mniejsza niż 2 lub większa niż 36, errno
jest ustawiona na EINVAL
wartość .
Aby uzyskać więcej informacji na temat kodów zwracanych, zobacz errno
, _doserrno
, _sys_errlist
i _sys_nerr
.
Uwagi
Funkcja strtoimax
jest konwertowana strSource
na element intmax_t
. Wersja znaków szerokiego znaku strtoimax
to wcstoimax
; jego strSource
argument jest ciągiem o szerokim znaku. W przeciwnym razie te funkcje zachowują się identycznie. Obie funkcje przestają odczytywać ciąg strSource
przy pierwszym znaku, którego nie mogą rozpoznać jako części liczby. Może to być znak null zakończenia lub może być pierwszym znakiem liczbowym, który jest większy lub równy base
.
Ustawienie kategorii ustawień regionalnych określa rozpoznawanie LC_NUMERIC
znaku promienia w elem strSource
. Aby uzyskać więcej informacji, zobacz setlocale
, _wsetlocale
. Funkcje, które nie mają sufiksu _l
, używają bieżących ustawień regionalnych i _strtoimax_l
_wcstoimax_l
są identyczne z odpowiednimi funkcjami, które nie mają sufiksu _l
, 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
.
Mapowania procedur tekstu ogólnego
Procedura TCHAR.H | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tcstoimax |
strtoimax |
strtoimax |
wcstoimax |
_tcstoimax_l |
strtoimax_l |
_strtoimax_l |
_wcstoimax_l |
strtoimax
strSource
oczekuje wskazywania ciągu następującego formularza:
[
whitespace
] [{+
|-
}] [0
[{x
|X
}]] []digits
|letters
Element whitespace
może składać się z spacji i znaków tabulacji, które są ignorowane; digits
są co najmniej jedną cyfrą dziesiętną; letters
są co najmniej jedną literą "a" przez "z" (lub "A" przez "Z"). Pierwszy znak, który nie pasuje do tego formularza, zatrzymuje skanowanie. Jeśli base
wartość wynosi od 2 do 36, jest używana jako podstawa liczby. Jeśli base
wartość to 0, początkowe znaki ciągu wskazywane przez strSource
są używane do określania podstawy. Jeśli pierwszy znak to "0", a drugi znak nie jest "x" ani "X", ciąg jest interpretowany jako liczba całkowita ósemkowa. 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. Pierwszy znak poza zakresem podstawy zatrzymuje skanowanie. Na przykład jeśli base
wartość to 0, a pierwszy zeskanowany znak to "0", zakłada się, że liczba ósemkowa to ósemkowa, a znak "8" lub "9" zatrzyma skanowanie.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
strtoimax , , _strtoimax_l , , wcstoimax _wcstoimax_l |
<inttypes.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Zobacz też
Konwersja danych
ustawienia regionalne
localeconv
setlocale
, _wsetlocale
Funkcje ciąg-wartość liczbowa
strtod
, , _strtod_l
, , wcstod
_wcstod_l
strtol
, , wcstol
, , _strtol_l
_wcstol_l
strtoul
, , _strtoul_l
, , wcstoul
_wcstoul_l
strtoumax
, , _strtoumax_l
, , wcstoumax
_wcstoumax_l
atof
, , _atof_l
, , _wtof
_wtof_l