C ++ wcstoull () - C ++ Standardbibliothek

Die Funktion wcstoull () in C ++ interpretiert den Inhalt einer breiten Zeichenfolge als vorzeichenlose Integralzahl der angegebenen Basis und gibt ihren Wert als vorzeichenloses long long int zurück.

Die Funktion wcstoull () setzt auch einen Zeiger, der auf das erste Zeichen nach dem letzten gültigen Zeichen der breiten Zeichenfolge zeigt, falls vorhanden, andernfalls wird der Zeiger auf null gesetzt.

 Für Basis 10 und die breite Zeichenfolge L "29hi $" Gültiger numerischer Teil -> 29 Erstes Zeichen nach gültigem numerischen Teil -> h

Es ist in der Header-Datei definiert.

wcstoull () Prototyp

 unsigned long wcstoull (const wchar_t * str, wchar_t ** str_end, int base);

Die Funktion wcstoull () verwendet einen breiten String str, einen Zeiger auf das breite Zeichen str_end und einen ganzzahligen Wert - base als Parameter.

Anschließend interpretiert es den Inhalt einer breiten Zeichenfolge als vorzeichenlose Integralzahl der angegebenen Basis und gibt einen vorzeichenlosen long long int-Wert zurück.

wcstoull () Parameter

  • str: Eine breite Zeichenfolge mit der Darstellung einer vorzeichenlosen Integralzahl.
  • str_end: Ein Zeiger auf einen Zeiger auf ein breites Zeichen. Der Wert von str_end wird von der Funktion auf das nächste Zeichen in str nach dem letzten gültigen Zeichen gesetzt. Dieser Parameter kann auch ein Nullzeiger sein. In diesem Fall wird er nicht verwendet.
  • Basis: Die Basis des Integralwerts. Die Menge der gültigen Werte für die Basis ist (0, 2, 3,…, 35, 36).

wcstoull () Rückgabewert

Die Funktion wcstoull () gibt Folgendes zurück:

  • Ein vorzeichenloser Long Long Int-Wert (der aus der Zeichenfolge konvertiert wird).
  • 0, wenn keine gültige Konvertierung durchgeführt werden konnte.

Beispiel 1: Wie funktioniert die Funktion wcstoull ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"101aau16b6"; wchar_t str2() = L"59"; wchar_t *end; unsigned long long value; int base = 10; value = wcstoull(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoull(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 String value = 101aa ᚶ Long Long Int-Wert ohne Vorzeichen = 101 End String = aa ᚶ String-Wert = 59 Long Long Int-Wert ohne Vorzeichen = 59 End String =

Ein gültiger ganzzahliger Wert für die Funktion wcstoull () besteht aus:

  • Ein optionales + oder - Zeichen.
  • Ein Präfix 0 für die Oktalbasis (gilt nur, wenn die Basis = 8 oder 0 ist).
  • Ein Präfix 0x oder 0X für die hexadezimale Basis (gilt nur, wenn die Basis = 16 oder 0 ist).
  • Eine Folge von Ziffern und / oder Alphabeten (wenn die Basis größer als 10 ist).

Wenn das Argument am Anfang ein Minuszeichen (-) enthält, wird die negative Zahl implizit in einen vorzeichenlosen Long Long Int-Typ konvertiert, bei dem es sich um eine positive Zahl handelt.

Die gültigen Werte für die Parameterbasis sind (0, 2, 3,…, 35, 36). Ein Satz gültiger Ziffern für Basis 2 ist (0, 1), für Basis 3 ist (0, 1, 2) und so weiter. Für Basen von 11 bis 36 enthalten gültige Ziffern Alphabete.

Der Satz gültiger Ziffern für Basis 11 ist (0, 1,…, 9, A, a), für Basis 12 ist (0, 1,…, 9, A, a, B, b) und so weiter.

Beispiel 2: wcstoull () -Funktion mit verschiedenen Basen

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wchar_t str() = L"311bzu03feu03ff"; wcout << str << L" to Unsigned Long Long Int with base-5 = " << wcstoull(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-12 = " << wcstoull(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-36 = " << wcstoull(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 311bzϾϿ bis Unsigned Long Long Int mit base-5 = 81 End String = bzϾϿ 311bzϾϿ bis Unsigned Long Long Int mit base-12 = 5351 End String = zϾϿ 311bzϾϿ bis Unsigned Long Long Int mit base-36 = 5087231 End String = ϾϿ

Die Funktion wcstoull () ignoriert alle führenden Leerzeichen, bis das primäre Nicht-Leerzeichen gefunden wird.

Im Allgemeinen hat ein gültiges ganzzahliges Argument für die Funktion wcstoull () die folgende Form:

 (Leerzeichen) (- | +) (0 | 0x) (alphanumerische Zeichen)

Ausgehend von diesem Zeichen werden dann so viele Zeichen wie möglich verwendet, um eine gültige Ganzzahldarstellung zu bilden, und diese in einen vorzeichenlosen Long-Int-Wert konvertiert. Was nach dem letzten gültigen Zeichen von der Zeichenfolge übrig bleibt, wird ignoriert und hat keine Auswirkung auf das Ergebnis.

Beispiel 3: Funktion wcstoull () für führende Leerzeichen und ungültige Konvertierung

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L" 205u03e2x to Unsigned Long Long Int with base-5 = " << wcstoull(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Unsigned Long Long Int with base-12 = " << wcstoull(L"xu019cz201", &end, 12) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 205Ϣx bis Unsigned Long Long Int mit base-5 = 10 End String = 5Ϣx xƜz201 bis Unsigned Long Long Int mit base-12 = 0 End String = xƜz201

Wenn die Basis 0 ist, wird die numerische Basis automatisch anhand des Formats der Zeichenfolge ermittelt. Wenn das Präfix 0 ist, ist die Basis oktal (8). Wenn das Präfix 0x oder 0X ist, ist die Basis hexadezimal (16), andernfalls ist die Basis dezimal (10).

Beispiel 4: Funktion wcstoull () mit Basis 0

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t *end; wcout << L"0539u1e84 to Unsigned Long Long Int with base-0 = " << wcstoull(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Long Int with base-0 = " << wcstoull(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Long Int with base-0 = " << wcstoull(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 0539Ẅ zu unsigned Long Long Int mit base-0 = 43 End String = 9Ẅ 0xa31 ע zu Unsigned Long Long Int mit base-0 = 2609 End String = ע 119x ؏ zu Unsigned Long Long Int mit base-0 = 119 End String = x ؏

Interessante Beiträge...