C ++ wcstol () - C ++ standaardbibliotheek

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

De functie wcstol () stelt ook een pointer zo in dat deze naar het eerste teken wijst na het laatste geldige teken van de brede tekenreeks als die er is, anders wordt de aanwijzer op nul gezet.

Het wordt gedefinieerd in het header-bestand.

 Voor grondtal 10 en de brede reeks L "12abc" Geldig numeriek deel -> 12 Eerste teken na geldig numeriek deel -> a

wcstol () prototype

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

De functie wcstol () neemt een wide string, een pointer naar wide character en een integer value - base als parameter, interpreteert de inhoud van wide string als een geheel getal van de opgegeven base en retourneert een long int waarde.

wcstol () Parameters

  • str: een brede tekenreeks met de weergave van een 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).

wcstol () Retourwaarde

De functie wcstol () retourneert:

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

Voorbeeld 1: hoe de functie wcstol () werkt?

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

Wanneer u het programma uitvoert, is de uitvoer:

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

Een geldige integerwaarde voor de functie wcstol () 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).

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: wcstol () functie met verschillende 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; )

Wanneer u het programma uitvoert, is de uitvoer:

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

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

Over het algemeen heeft een geldig integer-argument voor de functie wcstol () 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 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: functie wcstol () voor eerste witruimte 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 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; )

Wanneer u het programma uitvoert, is de uitvoer:

 205Ϣx tot Long Int met basis-5 = 10 End String = 5Ϣx xƜz201 tot Long Int met basis-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: functie wcstol () 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 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; )

Wanneer u het programma uitvoert, is de uitvoer:

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

Interessante artikelen...