C ++ wcstoul () - C ++ standaardbibliotheek

De functie wcstoul () in C ++ interpreteert de inhoud van een brede tekenreeks als een niet-ondertekend geheel getal van de opgegeven basis en retourneert de waarde ervan als een niet-ondertekende lange int.

De functie wcstoul () stelt ook een pointer zo in dat deze naar het eerste karakter wijst na het laatste geldige karakter van de brede string als die er is, anders wordt de pointer op null gezet.

 Voor grondtal 10 en de brede reeks L "29hi $" Geldig numeriek deel -> 29 Eerste teken na geldig numeriek deel -> h

Het wordt gedefinieerd in het header-bestand.

wcstoul () prototype

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

De functie wcstoul () heeft een brede string str, een pointer naar wide character str_end en een integer waarde - base als parameter.

Het interpreteert vervolgens de inhoud van een brede reeks als een niet-ondertekend geheel getal van de opgegeven basis en retourneert een niet-ondertekende lange int-waarde.

wcstoul () Parameters

  • str: een brede tekenreeks met de weergave van een niet-ondertekend geheel getal.
  • str_end: een pointer naar een pointer naar een breed karakter. De waarde van str_end wordt door de functie ingesteld op het volgende teken in str na het laatste geldige teken. Deze parameter kan ook een null-pointer zijn, in welk geval deze niet wordt gebruikt.
  • basis: de basis van de integrale waarde. De reeks geldige waarden voor het grondtal is (0, 2, 3,…, 35, 36).

wcstoul () Retourwaarde

De functie wcstoul () retourneert:

  • een niet-ondertekende lange int-waarde (die wordt geconverteerd uit de tekenreeks).
  • 0 als er geen geldige conversie kon worden uitgevoerd.

Voorbeeld 1: Hoe werkt wcstoul () functie?

 #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; )

Wanneer u het programma uitvoert, is de uitvoer:

 Stringwaarde = 101aa ᚶ Unsigned Long Int-waarde = 101 End String = aa ᚶ Stringwaarde = 59 Unsigned Long Int-waarde = 59 End String =

Een geldige integerwaarde voor de functie wcstoul () bestaat uit:

  • Een optioneel + of - teken.
  • Een voorvoegsel 0 voor octaal grondtal (alleen van toepassing als grondtal = 8 of 0).
  • Een voorvoegsel 0x of 0X voor hexadecimaal grondtal (alleen van toepassing als grondtal = 16 of 0).
  • Een reeks cijfers en / of alfabetten (als het grondtal groter is dan 10).

Als het argument aan het begin een minteken (-) bevat, wordt het negatieve getal impliciet geconverteerd naar een lang int-type zonder teken dat een positief getal is.

De geldige waarden voor de parameterbasis zijn (0, 2, 3,…, 35, 36). Een reeks geldige cijfers voor basis 2 is (0, 1), voor basis 3 is (0, 1, 2) enzovoort. Voor basissen die beginnen met 11 tot 36, zijn geldige cijfers inclusief alfabetten.

De reeks geldige cijfers voor basis 11 is (0, 1, …, 9, A, a), voor basis 12 is (0, 1, …, 9, A, a, B, b) enzovoort.

Voorbeeld 2: wcstoul () functie met verschillende bases

 #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; )

Wanneer u het programma uitvoert, is de uitvoer:

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

De functie wcstoul () negeert alle leidende witruimtetekens totdat het primaire niet-witruimteteken is gevonden.

In het algemeen heeft een geldig integer-argument voor de functie wcstoul () de volgende vorm:

 (witruimte) (- | +) (0 | 0x) (alfanumerieke tekens)

Vervolgens, beginnend bij dit teken, zijn er zoveel mogelijk tekens nodig die een geldige integer-representatie vormen en deze omzetten in een niet-ondertekende lange int-waarde.

Wat er overblijft van de string na het laatste geldige teken wordt genegeerd en heeft geen effect op het resultaat.

Voorbeeld 3: wcstoul () functie voor voorloopspaties en ongeldige conversie

 #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; )

Wanneer u het programma uitvoert, is de uitvoer:

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

Als het grondtal 0 is, wordt het numerieke grondtal automatisch bepaald door naar het formaat van de string te kijken. Als het voorvoegsel 0 is, is de basis octaal (8). Als het voorvoegsel 0x of 0X is, is de basis hexadecimaal (16), anders is de basis decimaal (10).

Voorbeeld 4: wcstoul () functie met grondtal 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; )

Wanneer u het programma uitvoert, is de uitvoer:

 0539Ẅ tot Unsigned Long Int met base-0 = 43 End String = 9Ẅ 0xa31 ע tot Unsigned Long Int met base-0 = 2609 End String = ע 119x ؏ tot Unsigned Long Int met base-0 = 119 End String = x ؏

Interessante artikelen...