Namensräume
Varianten
Aktionen

std::strtoimax, std::strtoumax

Von cppreference.com
< cpp‎ | string‎ | byte
 
 
 
 
Definiert in 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 einer Byte-Zeichenkette, auf die nptr zeigt.

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 auf, um eine gültige *Basis-n* (wobei n = base) Ganzzahl-Darstellung zu bilden und konvertiert sie in einen Ganzzahlwert. Der gültige Ganzzahlwert 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 (0x oder 0X) 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 der Ziffernfolge berechnete numerische Wert negiert, als ob durch eine unäre Negation im Ergebnistyp.

Die Funktionen setzen den Zeiger, auf den endptr zeigt, so, dass er auf das Zeichen nach dem letzten interpretierten Zeichen zeigt. Wenn endptr ein Nullzeiger ist, wird er ignoriert.

Wenn nptr leer ist oder nicht die erwartete Form hat, wird keine Konvertierung durchgeführt und (wenn endptr kein Nullzeiger ist) wird der Wert von nptr in das von endptr zeigende Objekt gespeichert.

Inhalt

[edit] Parameter

nptr - Zeiger auf die nullterminierte Byte-Zeichenkette, die interpretiert werden soll
endptr - Zeiger auf einen Zeiger auf ein Zeichen.
base - Basis des interpretierten Ganzzahlwerts

[edit] Rückgabewert

  • Bei Erfolg wird ein ganzzahliger Wert zurückgegeben, der dem Inhalt von str entspricht.
  • Wenn der konvertierte Wert außerhalb des Bereichs des entsprechenden Rückgabetyps liegt, tritt ein Bereichsfehler auf (Setzen von errno auf ERANGE) und INTMAX_MAX, INTMAX_MIN, UINTMAX_MAX oder 0 wird zurückgegeben, je nachdem.
  • Wenn keine Konvertierung durchgeführt werden kann, wird 0 zurückgegeben.

[edit] 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'

[edit] Siehe auch

(C++11)(C++11)(C++11)
konvertiert einen String in eine vorzeichenbehaftete Ganzzahl
(function) [edit]
(C++11)(C++11)
konvertiert einen String in eine vorzeichenlose Ganzzahl
(function) [edit]
konvertiert einen Byte-String in einen Ganzzahlwert
(Funktion) [bearbeiten]
konvertiert einen Byte-String in einen vorzeichenlosen Ganzzahlwert
(Funktion) [bearbeiten]
(C++11)(C++11)
wandelt eine breite Zeichenkette in std::intmax_t oder std::uintmax_t um
(Funktion) [bearbeiten]
konvertiert einen Byte-String in einen Gleitkommawert
(Funktion) [bearbeiten]
konvertiert eine Zeichensequenz in einen Ganzzahl- oder Gleitkommawert
(Funktion) [bearbeiten]
konvertiert einen Byte-String in einen Ganzzahlwert
(Funktion) [bearbeiten]
C-Dokumentation für strtoimax, strtoumax