std::wcstoul, std::wcstoull
| Definiert in Header <cwchar> |
||
| unsigned long wcstoul ( const wchar_t* str, wchar_t** str_end, int base ); |
||
| unsigned long long wcstoull( const wchar_t* str, wchar_t** str_end, int base ); |
(seit C++11) | |
Interpretiert einen vorzeichenlosen Ganzzahlwert in einer Wide-String, auf den von str gezeigt wird.
Verwirft alle Whitespace-Zeichen (wie durch Aufruf von std::iswspace identifiziert), bis das erste Nicht-Whitespace-Zeichen gefunden wird, und nimmt dann so viele Zeichen wie möglich, um eine gültige Basis-n (wobei n=base) vorzeichenlose Ganzzahlendarstellung zu bilden, und konvertiert sie in einen Ganzzahlwert. Der gültige vorzeichenlose Ganzzahlwert besteht aus den folgenden Teilen
- (optional) Vorzeichen (+ oder -)
- (optional) Präfix (
0) zur Angabe der Oktalbasis (gilt nur, wenn die Basis 8 oder 0 ist) - (optional) Präfix (
0xoder0X) zur Angabe der Hexadezimalbasis (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 von der aktuell installierten 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, andernfalls ist die Basis dezimal.
Wenn das Minuszeichen Teil der Eingabesequenz war, wird der aus den Ziffern berechnete numerische Wert negiert, als ob durch unäres Minus im Ergebnistyp, was Regeln für vorzeichenlose Integer-Überläufe anwendet.
Die Funktionen setzen den von str_end zeigenden Zeiger auf das Zeichen nach dem letzten interpretierten Zeichen. Wenn str_end ein Nullzeiger 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 bei Erfolg dem Inhalt von str entspricht. Wenn der konvertierte Wert den Bereich des entsprechenden Rückgabetyps überschreitet, tritt ein Bereichsfehler auf und ULONG_MAX oder ULLONG_MAX wird zurückgegeben. Wenn keine Konvertierung durchgeführt werden kann, wird 0 zurückgegeben.
[bearbeiten] Beispiel
#include <cwchar> #include <errno.h> #include <iostream> #include <string> int main() { const wchar_t* p = L"10 200000000000000000000000000000 30 40"; wchar_t* end; std::wcout << "Parsing L'" << p << "':\n"; for (unsigned long i = std::wcstoul(p, &end, 10); p != end; i = std::wcstoul(p, &end, 10)) { std::wcout << '\'' << std::wstring(p, end - p) << "' -> "; p = end; if (errno == ERANGE) { std::wcout << "range error, got "; errno = 0; } std::wcout << i << '\n'; } }
Mögliche Ausgabe
Parsing L'10 200000000000000000000000000000 30 40': '10' -> 10 ' 200000000000000000000000000000' -> range error, got 18446744073709551615 ' 30' -> 30 ' 40' -> 40
[bearbeiten] Siehe auch
| (C++11) |
konvertiert einen Byte-String in einen vorzeichenlosen Ganzzahlwert (Funktion) |
| wandelt eine breite Zeichenkette in einen ganzzahligen Wert um (Funktion) | |
| C-Dokumentation für wcstoul, wcstoull
| |