C ++ wcstol () - C ++ Standardbibliothek

Die Funktion wcstol () in C ++ interpretiert den Inhalt einer breiten Zeichenfolge als ganzzahlige Zahl der angegebenen Basis und gibt ihren Wert als long int zurück.

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

Es ist in der Header-Datei definiert.

 Für Basis 10 und die breite Zeichenfolge L "12abc" Gültiger numerischer Teil -> 12 Erstes Zeichen nach gültigem numerischen Teil -> a

wcstol () Prototyp

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

Die Funktion wcstol () verwendet eine breite Zeichenfolge, einen Zeiger auf ein breites Zeichen und eine ganzzahlige Wertebasis als Parameter, interpretiert den Inhalt einer breiten Zeichenfolge als ganzzahlige Zahl der angegebenen Basis und gibt einen langen int-Wert zurück.

wcstol () Parameter

  • str: Eine breite Zeichenfolge mit der Darstellung einer ganzzahligen Zahl.
  • 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).

wcstol () Rückgabewert

Die Funktion wcstol () gibt Folgendes zurück:

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

Beispiel 1: Wie funktioniert die Funktion wcstol ()?

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

Ein gültiger ganzzahliger Wert für die Funktion wcstol () 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).

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: wcstol () -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 Long Int with base-5 = " << wcstol(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Long Int with base-5 = " << wcstol(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Long Int with base-5 = " << wcstol(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 Long Int mit Base-5 = 81 End String = bzϾϿ 311bzϾϿ zu Long Int mit Base-5 = 5351 End String = zϾϿ 311bzϾϿ zu Long Int mit Base-5 = 5087231 End String = ϾϿ

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

Im Allgemeinen hat ein gültiges Ganzzahlargument für die Funktion wcstol () die folgende Form:

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

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

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

Interessante Beiträge...