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.
std::strtoul(str.c_str(), &ptr, base) auf.std::wcstoul(str.c_str(), &ptr, base) auf.std::strtoull(str.c_str(), &ptr, base) auf.std::wcstoull(str.c_str(), &ptr, base) auf.Verwirft alle Leerraumzeichen (wie durch Aufruf von std::isspace identifiziert), bis das erste Nicht-Leerraumzeichen gefunden wird, nimmt dann so viele Zeichen wie möglich, um eine gültige Basis-n (wobei n=) Darstellung einer vorzeichenlosen Ganzzahl zu bilden, und konvertiert diese in einen Integerwert. Die gültige vorzeichenlose Integerdarstellung besteht aus den folgenden Teilen:
base
- (optional) Plus- oder Minuszeichen
- (optional) Präfix (
0) zur Angabe der oktalen Basis (gilt nur, wenn die Basis8oder0ist) - (optional) Präfix (
0xoder0X) zur Angabe der hexadezimalen Basis (gilt nur, wenn die Basis16oder0ist) - eine Folge von Ziffern
Die Menge der gültigen Werte für die Basis ist {0, 2, 3, ..., 36}. Die Menge der gültigen Ziffern für Ganzzahlen zur Basis-2 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 die Basis-11 Ganzzahl, bis Zz für die Basis-36 Ganzzahl. Die Groß-/Kleinschreibung der Zeichen wird ignoriert.
Zusätzliche numerische Formate können durch das aktuell installierte C-Locale akzeptiert werden.
Wenn der Wert von base0 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 der Ziffernfolge berechnete numerische Wert wie durch unäres Minus im Ergebnis typ negiert, wobei die Regeln für den Überlauf vorzeichenloser Integer gelten.
Wenn pos kein Nullzeiger ist, 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, wodurch die Anzahl der Zeichen angegeben wird, die von der Konvertierung verarbeitet wurden.
Parameter
| str | - | die zu konvertierende Zeichenkette |
| pos | - | Adresse einer Ganzzahl zum Speichern der Anzahl verarbeiteter Zeichen |
| base | - | die Zahlenbasis |
Rückgabewert
Der in den angegebenen vorzeichenlosen Ganzzahltyp konvertierte String.
Exceptions
- std::invalid_argument falls keine Konvertierung durchgeführt werden konnte.
- std::out_of_range wenn der konvertierte Wert außerhalb des Bereichs des Ergebnistyps liegen würde oder wenn die zugrunde liegende Funktion ( std::strtoul oder std::strtoull ) errno auf ERANGE setzt.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 2009 | C++11 |
std::out_of_range
würde nicht geworfen, wenn
std::strtoul oder std::strtoull errno auf ERANGE setzt |
wird werfen |
Siehe auch
|
(C++11)
(C++11)
(C++11)
|
konvertiert eine Zeichenkette in eine vorzeichenbehaftete Ganzzahl
(Funktion) |
|
(C++11)
(C++11)
(C++11)
|
konvertiert eine Zeichenkette in einen Gleitkommawert
(Funktion) |