Namensräume
Varianten
Aktionen

wcstoul, wcstoull

Von cppreference.com
< c‎ | string‎ | wide
 
 
 
 
Definiert in Header <wchar.h>
unsigned long      wcstoul( const wchar_t* str, wchar_t** str_end, int base );
(seit C95)
(bis C99)
unsigned long      wcstoul( const wchar_t * restrict str,
                            wchar_t ** restrict str_end, int base );
(seit C99)
unsigned long long wcstoull( const wchar_t * restrict str,
                             wchar_t ** restrict str_end, int base );
(seit C99)

Interpretiert einen vorzeichenlosen Ganzzahlwert in einem Wide-String, auf den von str gezeigt wird.

Verwirft alle Whitespace-Zeichen (wie durch Aufruf von iswspace identifiziert), bis das erste Nicht-Whitespace-Zeichen gefunden wird, nimmt dann so viele Zeichen wie möglich, um eine gültige *Basis-n* (wobei n=base) vorzeichenlose Ganzzahl-Darstellung zu bilden und konvertiert sie in einen Ganzzahlwert. Der gültige vorzeichenlose Ganzzahlwert besteht aus den folgenden Teilen

  • (optional) Vorzeichen (+ oder -)
  • (optional) Präfix (0), das die Oktalbasis angibt (gilt nur, wenn die Basis 8 oder 0 ist)
  • (optional) Präfix (0x oder 0X), das die Hexadezimalbasis angibt (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 durch die 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, ansonsten ist die Basis Dezimal.

Wenn das Minuszeichen Teil der Eingabesequenz war, wird der numerische Wert, der aus der Ziffernsequenz berechnet wurde, wie durch unäres Minus im Ergebnistyp negiert, was Regeln für Überlauf von vorzeichenlosen Ganzzahlen anwendet.

Die Funktionen setzen den Zeiger, auf den von str_end gezeigt wird, so, dass er auf das Wide-Zeichen nach dem zuletzt interpretierten Zeichen zeigt. 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

Ganzzahlwert, der dem Inhalt von str bei Erfolg entspricht. Wenn der konvertierte Wert den Wertebereich des entsprechenden Rückgabetyps übersteigt, tritt ein Bereichsfehler auf und ULONG_MAX oder ULLONG_MAX wird zurückgegeben. Wenn keine Konvertierung durchgeführt werden kann, wird 0 zurückgegeben.

[bearbeiten] Beispiel

#include <stdio.h>
#include <errno.h>
#include <wchar.h>
 
int main(void)
{
    const wchar_t *p = L"10 200000000000000000000000000000 30 40";
    printf("Parsing L'%ls':\n", p);
    wchar_t *end;
    for (unsigned long i = wcstoul(p, &end, 10);
         p != end;
         i = wcstoul(p, &end, 10))
    {
        printf("'%.*ls' -> ", (int)(end-p), p);
        p = end;
        if (errno == ERANGE){
            printf("range error, got ");
            errno = 0;
        }
        printf("%lu\n", i);
    }
}

Ausgabe

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

[bearbeiten] Referenzen

  • C11-Standard (ISO/IEC 9899:2011)
  • 7.29.4.1.2 Die Funktionen wcstol, wcstoll, wcstoul und wcstoull (S. 429-430)
  • C99-Standard (ISO/IEC 9899:1999)
  • 7.24.4.1.2 Die Funktionen wcstol, wcstoll, wcstoul und wcstoull (S. 375-376)

[bearbeiten] Siehe auch

konvertiert einen Byte-String in einen vorzeichenlosen Ganzzahlwert
(Funktion) [bearbeiten]
(C95)(C99)
wandelt eine breite Zeichenkette in einen ganzzahligen Wert um
(Funktion) [bearbeiten]
C++ Dokumentation für wcstoul, wcstoull