Namespaces
Variants

wcstoimax, wcstoumax

From cppreference.net
< c ‎ | string ‎ | wide
Definiert in Header <inttypes.h>
intmax_t wcstoimax ( const wchar_t * restrict nptr,
wchar_t ** restrict endptr, int base ) ;
(seit C99)
uintmax_t wcstoumax ( const wchar_t * restrict nptr,
wchar_t ** restrict endptr, int base ) ;
(seit C99)

Interpretiert einen ganzzahligen Wert ohne Vorzeichen in der breiten Zeichenkette, auf die nptr zeigt.

Verwirft alle Leerzeichen (wie durch Aufruf von iswspace identifiziert) bis zum ersten Nicht-Leerzeichen gefunden wird, dann nimmt so viele Zeichen wie möglich, um eine gültige Basis-n (wobei n= base ) Ganzzahl ohne Vorzeichen Darstellung zu bilden und konvertiert sie zu einem ganzzahligen Wert. Der gültige Ganzzahlwert ohne Vorzeichen 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 ( 0x oder 0X ) 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 beträgt, 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 unäres Minus im Ergebnistyp, was die Wrap-around-Regeln für vorzeichenlose Ganzzahlen anwendet.

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

Inhaltsverzeichnis

Parameter

nptr - Zeiger auf den zu interpretierenden nullterminierten Breitzeichen-String
endptr - Zeiger auf einen Zeiger zu einem Breitzeichen.
base - base Basis des interpretierten Ganzzahlwerts

Rückgabewert

Integerwert entsprechend dem Inhalt von str bei Erfolg. Falls der konvertierte Wert außerhalb des Bereichs des entsprechenden Rückgabetyps liegt, tritt ein Bereichsfehler auf und INTMAX_MAX , INTMAX_MIN , UINTMAX_MAX , oder 0 wird zurückgegeben, je nachdem. Falls keine Konvertierung durchgeführt werden kann, wird 0 zurückgegeben.

Beispiel

#include <errno.h>
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
#include <wchar.h>
int main(void)
{
  wchar_t* endptr;
  wprintf(L"%ld\n", wcstoimax(L" -123junk", &endptr, 10)); /* Basis 10                    */
  wprintf(L"%ld\n", wcstoimax(L"11111111", &endptr, 2));   /* Basis 2                     */
  wprintf(L"%ld\n", wcstoimax(L"XyZ", &endptr, 36));       /* Basis 36                    */
  wprintf(L"%ld\n", wcstoimax(L"010", &endptr, 0));        /* Oktale Auto-Erkennung       */
  wprintf(L"%ld\n", wcstoimax(L"10", &endptr, 0));         /* Dezimale Auto-Erkennung     */
  wprintf(L"%ld\n", wcstoimax(L"0x10", &endptr, 0));       /* Hexadezimale Auto-Erkennung */
  /* Bereichsfehler             */
  /* LONG_MAX+1 --> LONG_MAX */
  errno = 0;
  wprintf(L"%ld\n", wcstoimax(L"9223372036854775808", &endptr, 10));
  wprintf(L"%s\n", strerror(errno));
}

Ausgabe:

-123
255
44027
8
10
16
9223372036854775807
Numerical result out of range

Referenzen

  • C11-Standard (ISO/IEC 9899:2011):
  • 7.8.2.4 Die wcstoimax- und wcstoumax-Funktionen (S. 220)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.8.2.4 Die wcstoimax- und wcstoumax-Funktionen (S. 201)

Siehe auch

konvertiert eine Byte-Zeichenkette zu intmax_t oder uintmax_t
(Funktion)
(C95) (C99)
konvertiert eine Breitzeichen-Zeichenkette zu einem ganzzahligen Wert
(Funktion)
(C95) (C99)
konvertiert eine Breitzeichen-Zeichenkette zu einem vorzeichenlosen ganzzahligen Wert
(Funktion)
C++-Dokumentation für wcstoimax , wcstoumax