C ++ wcstoul () - C ++ Standardbibliothek

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

Die Funktion wcstoul () 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.

wcstoul () Prototyp

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

Die Funktion wcstoul () 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 langen int-Wert zurück.

wcstoul () 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).

wcstoul () Rückgabewert

Die Funktion wcstoul () gibt Folgendes zurück:

  • Ein vorzeichenloser 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 wcstoul ()?

 #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 value; int base = 10; value = wcstoul(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoul(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned 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 Int-Wert ohne Vorzeichen = 101 End String = aa ᚶ String-Wert = 59 Long Int-Wert ohne Vorzeichen = 59 End String =

Ein gültiger ganzzahliger Wert für die Funktion wcstoul () 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-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: wcstoul () -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 Int with base-5 = " << wcstoul(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-12 = " << wcstoul(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-36 = " << wcstoul(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ϾϿ zu unsigned Long Int mit base-5 = 81 End String = bzϾϿ 311bzϾϿ zu Unsigned Long Int mit base-12 = 5351 End String = zϾϿ 311bzϾϿ zu Unsigned Long Int mit base-36 = 5087231 End String = ϾϿ

Die Funktion wcstoul () 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 wcstoul () 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: wcstoul () -Funktion 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 Int with base-5 = " << wcstoul(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Unsigned Long Int with base-12 = " << wcstoul(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 Int mit base-5 = 10 End String = 5Ϣx xƜz201 bis Unsigned 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 wcstoul () 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 Int with base-0 = " << wcstoul(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Int with base-0 = " << wcstoul(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Int with base-0 = " << wcstoul(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 Int mit base-0 = 43 End String = 9Ẅ 0xa31 ע zu Unsigned Long Int mit base-0 = 2609 End String = ע 119x ؏ zu Unsigned Long Int mit base-0 = 119 End String = x ؏

Interessante Beiträge...