Namensräume
Varianten
Aktionen

std::wcstol, std::wcstoll

Von cppreference.com
< cpp‎ | string‎ | wide
 
 
 
 
Definiert in Header <cwchar>
long      wcstol ( const wchar_t* str, wchar_t** str_end, int base );
long long wcstoll( const wchar_t* str, wchar_t** str_end, int base );
(seit C++11)

Interpretiert einen Ganzzahlwert in einer von str zeigenden Wide-String.

Verwirft alle Leerzeichen (identifiziert durch Aufruf von std::iswspace), bis das erste Nicht-Leerzeichen gefunden wird, und nimmt dann so viele Zeichen wie möglich auf, um eine gültige Basis-n (wobei n = base) Ganzzahldarstellung 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 von str_end zeigenden Zeiger auf das Zeichen nach dem letzten interpretierten Zeichen. Wenn str_end ein Nullzeiger ist, wird er ignoriert.

Inhalt

[bearbeiten] Parameter

str - Zeiger auf den nullterminierten Wide-String, der interpretiert werden soll
str_end - Zeiger auf einen Zeiger auf ein Wide-Zeichen
base - Basis des interpretierten Ganzzahlwerts

[bearbeiten] Rückgabewert

Der Ganzzahlwert, der dem Inhalt von str bei Erfolg entspricht. Wenn der konvertierte Wert außerhalb des Bereichs des entsprechenden Rückgabetyps liegt, tritt ein Bereichsfehler auf und LONG_MAX, LONG_MIN, LLONG_MAX oder LLONG_MIN wird zurückgegeben. Wenn keine Konvertierung durchgeführt werden kann, wird 0 zurückgegeben.

[bearbeiten] Beispiel

#include <cwchar>
#include <errno.h>
#include <iostream>
#include <string>
 
int main()
{
    const wchar_t* p = L"10 200000000000000000000000000000 30 -40";
    wchar_t* end;
    std::wcout << "Parsing L'" << p << "':\n";
    for (long i = std::wcstol(p, &end, 10); p != end; i = std::wcstol(p, &end, 10))
    {
        std::wcout << '\'' << std::wstring(p, end-p) << "' -> ";
        p = end;
        if (errno == ERANGE)
        {
            std::wcout << "range error, got ";
            errno = 0;
        }
        std::wcout << i << '\n';
    }
}

Mögliche Ausgabe

Parsing L'10 200000000000000000000000000000 30 -40':
'10' -> 10
' 200000000000000000000000000000' -> range error, got 9223372036854775807
' 30' -> 30
' -40' -> -40

[bearbeiten] Siehe auch

konvertiert einen Byte-String in einen Ganzzahlwert
(Funktion) [bearbeiten]
wandelt eine breite Zeichenkette in einen vorzeichenlosen ganzzahligen Wert um
(Funktion) [bearbeiten]
C-Dokumentation für wcstol, wcstoll