wcstol, wcstoll
| Definiert in Header <wchar.h> |
||
long wcstol( const wchar_t * str, wchar_t ** str_end, int base ); |
(seit C95) (bis C99) |
|
| long wcstol( const wchar_t * restrict str, wchar_t ** restrict str_end, int base ); |
(seit C99) | |
| long long wcstoll( const wchar_t * restrict str, wchar_t ** restrict str_end, int base ); |
(seit C99) | |
Interpretiert einen ganzzahligen Wert in einer Wide-String, auf die von str gezeigt wird.
Verwirft alle Whitespace-Zeichen (wie durch Aufruf von iswspace identifiziert), bis das erste Nicht-Whitespace-Zeichen gefunden wird, nimmt dann so viele Zeichen wie möglich auf, um eine gültige Basis-n (wobei n=base) Ganzzahl-Darstellung zu bilden und konvertiert sie in einen ganzzahligen Wert. Der gültige ganzzahlige Wert besteht aus den folgenden Teilen
- (optional) Vorzeichen (+ oder -)
- (optional) Präfix (
0), das die Oktalbasis angibt (gilt nur, wenn die Basis 8 oder 0 ist) - (optional) Präfix (
0xoder0X), das die Hexadezimalbasis angibt (gilt nur, wenn die Basis 16 oder 0 ist) - eine Folge von Ziffern
Die Menge der gültigen Werte für base ist {0, 2, 3, ..., 36}. Die Menge der gültigen Ziffern für Basis-2-Ganzzahlen ist {0, 1}, für Basis-3-Ganzzahlen ist {0, 1, 2} und so weiter. Für Basen größer als 10 umfassen gültige Ziffern alphabetische Zeichen, beginnend mit Aa für Basis-11-Ganzzahlen bis Zz für Basis-36-Ganzzahlen. Die Groß-/Kleinschreibung der Zeichen wird ignoriert.
Zusätzliche numerische Formate können durch die aktuell installierte C-Locale akzeptiert werden.
Wenn der Wert von base 0 ist, wird die numerische Basis automatisch erkannt: Wenn das Präfix 0 ist, ist die Basis Oktal, wenn das Präfix 0x oder 0X ist, ist die Basis Hexadezimal, ansonsten ist die Basis Dezimal.
Wenn das Minuszeichen Teil der Eingabesequenz war, wird der aus der Ziffernsequenz berechnete numerische Wert negiert, als ob durch unäres Minus im Ergebnistyp.
Die Funktionen setzen den von str_end zeigenden Zeiger auf das Wide-Zeichen nach dem letzten interpretierten Zeichen. Wenn str_end ein Null-Zeiger ist, wird er ignoriert.
Inhalt |
[bearbeiten] Parameter
| str | - | Zeiger auf den nullterminierten Wide-String, der interpretiert werden soll |
| str_end | - | Zeiger auf einen Zeiger auf ein Wide-Zeichen |
| base | - | Basis des interpretierten Ganzzahlwerts |
[bearbeiten] Rückgabewert
Ganzzahliger Wert, der dem Inhalt von str bei Erfolg entspricht. Wenn der konvertierte Wert außerhalb des Bereichs des entsprechenden Rückgabetyps liegt, tritt ein Bereichsfehler auf und LONG_MAX, LONG_MIN, LLONG_MAX oder LLONG_MIN wird zurückgegeben. Wenn keine Konvertierung durchgeführt werden kann, wird 0 zurückgegeben.
[bearbeiten] Beispiel
#include <stdio.h> #include <errno.h> #include <wchar.h> int main(void) { const wchar_t *p = L"10 200000000000000000000000000000 30 -40"; printf("Parsing L'%ls':\n", p); wchar_t *end; for (long i = wcstol(p, &end, 10); p != end; i = wcstol(p, &end, 10)) { printf("'%.*ls' -> ", (int)(end-p), p); p = end; if (errno == ERANGE){ printf("range error, got "); errno = 0; } printf("%ld\n", i); } }
Ausgabe
Parsing L'10 200000000000000000000000000000 30 -40': '10' -> 10 ' 200000000000000000000000000000' -> range error, got 9223372036854775807 ' 30' -> 30 ' -40' -> -40
[bearbeiten] Referenzen
- C11-Standard (ISO/IEC 9899:2011)
- 7.29.4.1.2 Die Funktionen wcstol, wcstoll, wcstoul und wcstoull (S. 429-430)
- C99-Standard (ISO/IEC 9899:1999)
- 7.24.4.1.2 Die Funktionen wcstol, wcstoll, wcstoul und wcstoull (S. 375-376)
[bearbeiten] Siehe auch
| (C99) |
konvertiert einen Byte-String in einen Ganzzahlwert (Funktion) |
| (C95)(C99) |
wandelt eine breite Zeichenkette in einen vorzeichenlosen ganzzahligen Wert um (Funktion) |
| C++ Dokumentation für wcstol, wcstoll
| |