Namespaces
Variants

std::stoul, std::stoull

Von de.cppreference.net
 
 
 
std::basic_string
 
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.

1) Ruft std::strtoul(str.c_str(), &ptr, base) auf.
2) Ruft std::wcstoul(str.c_str(), &ptr, base) auf.
3) Ruft std::strtoull(str.c_str(), &ptr, base) auf.
4) Ruft 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=base) Darstellung einer vorzeichenlosen Ganzzahl zu bilden, und konvertiert diese in einen Integerwert. Die gültige vorzeichenlose Integerdarstellung besteht aus den folgenden Teilen:

  • (optional) Plus- oder Minuszeichen
  • (optional) Präfix (0) zur Angabe der oktalen Basis (gilt nur, wenn die Basis 8 oder 0 ist)
  • (optional) Präfix (0x oder 0X) zur Angabe der hexadezimalen Basis (gilt nur, wenn die Basis 16 oder 0 ist)
  • 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 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 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

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)