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 Integer-Wert 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 (identifiziert durch Aufruf von
std::isspace
) bis zum ersten Nicht-Leerzeichen gefunden wird, dann nimmt so viele Zeichen wie möglich, um eine gültige
Basis-n
(wobei n=
base
) vorzeichenlose Ganzzahldarstellung zu bilden und konvertiert sie in einen Ganzzahlwert. Der gültige vorzeichenlose Ganzzahlwert besteht aus folgenden Teilen:
- (optional) Plus- oder Minuszeichen
-
(optional)
Präfix (
0), das die oktale Basis angibt (gilt nur, wenn die Basis 8 oder 0 ist) -
(optional)
Präfix (
0xoder0X), das die hexadezimale Basis angibt (gilt nur, wenn die Basis 16 oder 0 ist) - eine Ziffernfolge
Die Menge der gültigen Werte für die Basis ist
{0, 2, 3, ..., 36}
. Die Menge der gültigen Ziffern für Basis-
2
-Integer ist
{0, 1}
, für Basis-
3
-Integer 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
-Integer, bis zu
Zz
für Basis-
36
-Integer. 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
gleich
0
ist, wird die numerische Basis automatisch erkannt: wenn das Präfix
0
lautet, ist die Basis oktal, wenn das Präfix
0x
oder
0X
lautet, ist die Basis hexadezimal, andernfalls ist die Basis dezimal.
Wenn das Minuszeichen Teil der Eingabesequenz war, wird der numerische Wert, der aus der Ziffernfolge berechnet wurde, negiert, als ob durch unary minus im Ergebnistyp, was die Wrap-around-Regeln für vorzeichenlose Ganzzahlen 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 durch die Konvertierung verarbeiteten Zeichen angibt.
Inhaltsverzeichnis |
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) |