strtol
, , wcstol
_strtol_l
_wcstol_l
Konvertieren Sie Zeichenfolgen in einen long
ganzzahligen Wert.
Syntax
long strtol(
const char *string,
char **end_ptr,
int base
);
long wcstol(
const wchar_t *string,
wchar_t **end_ptr,
int base
);
long _strtol_l(
const char *string,
char **end_ptr,
int base,
_locale_t locale
);
long _wcstol_l(
const wchar_t *string,
wchar_t **end_ptr,
int base,
_locale_t locale
);
Parameter
string
Zu konvertierende mit NULL endende Zeichenfolge.
end_ptr
Ein Ausgabeparameter, der auf das Zeichen nach dem letzten interpretierten Zeichen zeigt. Ignoriert, wenn NULL
.
base
Zu verwendende Zahlenbasis.
locale
Zu verwendendes Gebietsschema.
Rückgabewert
strtol
, wcstol
, _strtol_l
und _wcstol_l
geben Sie den in string
. Sie geben 0 zurück, wenn keine Konvertierung möglich ist. Wenn die Darstellung einen Überlauf verursachen würde, geben sie zurück LONG_MAX
oder LONG_MIN
.
errno
ist auf den ERANGE
Fall festgelegt, ob Überlauf oder Unterlauf auftritt. Es ist auf EINVAL
"if string
is NULL
" festgelegt. Oder, wenn base
es sich nicht um Zero und kleiner als 2 oder größer als 36 handelt. Weitere Informationen zu ERANGE
, und anderen Rückgabecodes finden Sie unter errno
, , _doserrno
, _sys_errlist
und _sys_nerr
. EINVAL
Hinweise
Die strtol
, wcstol
, _strtol_l
, und _wcstol_l
Funktionen werden string
in ein long
. Sie beenden das Lesen string
am ersten Zeichen, das nicht als Teil einer Zahl erkannt wird. Es kann sich um das Endzeichen null oder das erste alphanumerische Zeichen größer oder gleich sein base
.
wcstol
und _wcstol_l
sind Breitzeichenversionen von strtol
und _strtol_l
. Das string
Argument ist eine breite Zeichenfolge. Diese Funktionen verhalten sich identisch mit strtol
und _strtol_l
andernfalls. Die Kategorieeinstellung des Gebietsschemas LC_NUMERIC
bestimmt die Erkennung des Radixzeichens (die Bruchmarkierung oder dezimale Punkt) in string
. Die Funktionen strtol
und wcstol
verwenden das aktuelle Gebietsschema. _strtol_l
und _wcstol_l
verwenden Sie stattdessen das gebietsschema, das übergeben wurde. Weitere Informationen finden Sie unter [setlocale
] und Gebietsschema.
Ist end_ptr
dies NULL
der Zeitpunkt, wird er ignoriert. Andernfalls wird ein Zeiger auf das Zeichen, das den Scan beendet hat, an der Position gespeichert, auf end_ptr
die verwiesen wird. Es ist keine Konvertierung möglich, wenn keine gültigen Ziffern gefunden werden oder eine ungültige Basis angegeben wird. Der Wert von string
wird dann an der Position gespeichert, auf die verwiesen wird.end_ptr
strtol
erwartet, dass string
auf eine Zeichenfolge der folgenden Form zeigt:
[] [
whitespace
{+
|-
}] [0
[{x
|X
}]] [] []alphanumerics
Eckige Klammern ([ ]
) umgeben optionale Elemente. Geschweifte Klammern und eine vertikale Leiste ({ | }
) umgeben Alternativen für ein einzelnes Element. whitespace
kann aus Leerzeichen und Tabstoppzeichen bestehen, die ignoriert werden. alphanumerics
sind Dezimalziffern oder die Buchstaben 'a'
durch 'z'
(oder 'A'
durch 'Z'
). Das erste Zeichen, das nicht in dieses Formular passt, beendet den Scan. Wenn base
sie zwischen 2 und 36 liegt, wird sie als Basis der Zahl verwendet. Ist base
dies 0
der Grund, werden die Anfangszeichen der Zeichenfolge, auf string
die verwiesen wird, verwendet, um die Basis zu bestimmen. Wenn das erste Zeichen und 0
das zweite Zeichen nicht 'x'
oder 'X'
ist, wird die Zeichenfolge als oktale ganze Zahl interpretiert. Wenn das erste Zeichen und '0'
das zweite Zeichen oder das zweite Zeichen ist 'x'
oder 'X'
, wird die Zeichenfolge als hexadezimale ganze Zahl interpretiert. Wenn das erste Zeichen durch '9'
ist'1'
, wird die Zeichenfolge als dezimale ganze Zahl interpretiert. Die Buchstaben 'a'
durch 'z'
(oder 'A'
durch 'Z'
) werden den Werten 10 bis 35 zugewiesen. Der Scan erlaubt nur Buchstaben, deren Werte kleiner als base
sind. Das erste Zeichen außerhalb des Bereichs der Basis beendet die Überprüfung. Angenommen string
, beginnt mit "01"
. Wenn base
ja 0
, geht der Scanner davon aus, dass es sich um eine oktale ganze Zahl handelt. Ein '8'
oder '9'
Ein Zeichen stoppt den Scan.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
TCHAR.H-Routine | _UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tcstol |
strtol |
strtol |
wcstol |
_tcstol_l |
_strtol_l |
_strtol_l |
_wcstol_l |
Anforderungen
Routine | Erforderlicher Header |
---|---|
strtol |
<stdlib.h> |
wcstol |
<stdlib.h> oder <wchar.h> |
_strtol_l |
<stdlib.h> |
_wcstol_l |
<stdlib.h> oder <wchar.h> |
Die _strtol_l
Funktionen _wcstol_l
sind Microsoft-spezifisch, nicht Teil der Standard-C-Bibliothek. Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
Ein Beispiel hierfür finden Sie unter strtod
.
Siehe auch
Datenkonvertierung
Gebietsschema
localeconv
setlocale
, _wsetlocale
Zeichenfolge zu numerischen Wertfunktionen
strtod
, , _strtod_l
wcstod
_wcstod_l
strtoll
, , _strtoll_l
wcstoll
_wcstoll_l
strtoul
, , _strtoul_l
wcstoul
_wcstoul_l
atof
, , _atof_l
_wtof
_wtof_l