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_lund _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_errlistund _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 NULLder Zeitpunkt, wird er ignoriert. Andernfalls wird ein Zeiger auf das Zeichen, das den Scan beendet hat, an der Position gespeichert, auf end_ptrdie 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 0der Grund, werden die Anfangszeichen der Zeichenfolge, auf string die verwiesen wird, verwendet, um die Basis zu bestimmen. Wenn das erste Zeichen und 0das 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 basesind. 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. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Generische Textroutinzuordnungen

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

Sehen Sie sich das Beispiel für 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