std:: strtoimax, std:: strtoumax
|
Definiert im Header
<cinttypes>
|
||
|
std::
intmax_t
strtoimax
(
const
char
*
nptr,
char
**
endptr,
int
base
)
;
|
(1) | (seit C++11) |
|
std::
uintmax_t
strtoumax
(
const
char
*
nptr,
char
**
endptr,
int
base
)
;
|
(2) | (seit C++11) |
Interpretiert einen ganzzahligen Wert in der Byte-Zeichenkette, auf die nptr zeigt.
Verwirft alle Leerzeichen (wie durch Aufruf von
std::isspace
identifiziert) bis zum ersten Nicht-Leerzeichen, dann nimmt so viele Zeichen wie möglich, um eine gültige
Basis-n
(wobei n=
base
) Ganzzahldarstellung zu bilden und konvertiert sie in einen Ganzzahlwert. Der gültige Ganzzahlwert besteht aus folgenden Teilen:
- (optional) Plus- oder Minuszeichen
-
(optional)
Präfix (
0) zur Kennzeichnung der Oktalbasis (gilt nur, wenn die Basis 8 oder 0 ist) -
(optional)
Präfix (
0xoder0X) zur Kennzeichnung der Hexadezimalbasis (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
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 numerische Wert, der aus der Ziffernfolge berechnet wurde, negiert, als ob durch unary minus im Ergebnistyp.
Die Funktion setzt den Zeiger, auf den endptr zeigt, so, dass er auf das Zeichen nach dem letzten interpretierten Zeichen verweist. Wenn endptr ein Nullzeiger ist, wird er ignoriert.
Wenn der nptr leer ist oder nicht die erwartete Form hat, wird keine Konvertierung durchgeführt, und (falls enptr kein Nullzeiger ist) wird der Wert von nptr in dem Objekt gespeichert, auf das endptr zeigt.
Inhaltsverzeichnis |
Parameter
| nptr | - | Zeiger auf die nullterminierte Byte-Zeichenkette, die interpretiert werden soll |
| endptr | - | Zeiger auf einen Zeiger zu einem Zeichen. |
| base | - | base des interpretierten Ganzzahlwerts |
Rückgabewert
- Bei Erfolg wird ein ganzzahliger Wert zurückgegeben, der dem Inhalt von str entspricht.
- Falls der konvertierte Wert außerhalb des Bereichs des entsprechenden Rückgabetyps liegt, tritt ein Bereichsfehler auf (wobei errno auf ERANGE gesetzt wird) und es werden INTMAX_MAX , INTMAX_MIN , UINTMAX_MAX oder 0 zurückgegeben, je nach Situation.
- Falls keine Konvertierung durchgeführt werden kann, wird 0 zurückgegeben.
Beispiel
#include <cinttypes> #include <iostream> #include <string> int main() { std::string str = "helloworld"; std::intmax_t val = std::strtoimax(str.c_str(), nullptr, 36); std::cout << str << " in base 36 is " << val << " in base 10\n"; char* nptr; val = std::strtoimax(str.c_str(), &nptr, 30); if (nptr != &str[0] + str.size()) std::cout << str << " in base 30 is invalid." << " The first invalid digit is '" << *nptr << "'\n"; }
Ausgabe:
helloworld in base 36 is 1767707668033969 in base 10 helloworld in base 30 is invalid. The first invalid digit is 'w'
Siehe auch
|
(C++11)
(C++11)
(C++11)
|
wandelt eine Zeichenkette in eine vorzeichenbehaftete Ganzzahl um
(Funktion) |
|
(C++11)
(C++11)
|
wandelt eine Zeichenkette in eine vorzeichenlose Ganzzahl um
(Funktion) |
|
(C++11)
|
wandelt eine Byte-Zeichenkette in einen Ganzzahlwert um
(Funktion) |
|
(C++11)
|
wandelt eine Byte-Zeichenkette in einen vorzeichenlosen Ganzzahlwert um
(Funktion) |
|
(C++11)
(C++11)
|
wandelt eine Breitzeichenkette in
std::intmax_t
oder
std::uintmax_t
um
(Funktion) |
|
wandelt eine Byte-Zeichenkette in einen Gleitkommawert um
(Funktion) |
|
|
(C++17)
|
wandelt eine Zeichenfolge in einen Ganzzahl- oder Gleitkommawert um
(Funktion) |
|
(C++11)
|
wandelt eine Byte-Zeichenkette in einen Ganzzahlwert um
(Funktion) |
|
C-Dokumentation
für
strtoimax
,
strtoumax
|
|