std::stoul, std::stoull
| Definiert in Header <string> |
||
| unsigned long stoul ( const std::string& str, std::size_t* pos = nullptr, int base = 10 ); |
(1) | (seit C++11) |
| unsigned long stoul ( const std::wstring& str, std::size_t* pos = nullptr, int base = 10 ); |
(2) | (seit C++11) |
| unsigned long long stoull( const std::string& str, std::size_t* pos = nullptr, int base = 10 ); |
(3) | (seit C++11) |
| unsigned long long stoull( const std::wstring& str, std::size_t* pos = nullptr, int base = 10 ); |
(4) | (seit C++11) |
Interpretiert einen vorzeichenlosen Integerwert in der Zeichenkette str.
Sei ptr ein interner (für die Konvertierungsfunktionen) Zeiger vom Typ char* (1,3) oder wchar_t* (2,4), entsprechend.
Verwirft alle Leerzeichen (wie durch Aufruf von std::isspace identifiziert), bis das erste Nicht-Leerzeichen gefunden wird, nimmt dann so viele Zeichen wie möglich, um eine gültige Basis-n (wobei n=base) vorzeichenlose Integer-Zahlendarstellung zu bilden, und konvertiert sie in einen Integerwert. Der gültige vorzeichenlose Integerwert 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.
Wenn pos kein Nullzeiger ist, dann erhält ptr die Adresse des ersten nicht konvertierten Zeichens in str.c_str(), und der Index dieses Zeichens wird berechnet und in *pos gespeichert, was die Anzahl der von der Konvertierung verarbeiteten Zeichen angibt.
Inhalt |
[bearbeiten] Parameter
| str | - | der zu konvertierende String |
| pos | - | Adresse eines Integers, um die Anzahl der verarbeiteten Zeichen zu speichern |
| base | - | die Zahlenbasis |
[bearbeiten] Rückgabewert
Die in den angegebenen vorzeichenlosen Integer-Typ konvertierte Zeichenkette.
[bearbeiten] Ausnahmen
- std::invalid_argument, wenn keine Konvertierung durchgeführt werden konnte.
- std::out_of_range, wenn der konvertierte Wert außerhalb des Bereichs des Ergebnistyps liegt oder wenn die zugrunde liegende Funktion (std::strtoul oder std::strtoull) errno auf ERANGE setzt.
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2009 | C++11 | std::out_of_range würde nicht ausgelöst werden, wenn std::strtoul oder std::strtoull errno auf ERANGE setzt |
wirft |
[bearbeiten] Siehe auch
| (C++11)(C++11)(C++11) |
konvertiert einen String in eine vorzeichenbehaftete Ganzzahl (function) |
| (C++11)(C++11)(C++11) |
konvertiert einen String in einen Gleitkommawert (function) |