C ++ wcstol () - C ++ -kirjasto

C ++: n wcstol () -funktio tulkitsee leveän merkkijonon sisällön määritetyn perustan integraaliluvuksi ja palauttaa sen arvon pitkinä int.

Wcstol () -toiminto asettaa myös osoittimen osoittamaan ensimmäistä merkkiä leveän merkkijonon viimeisen kelvollisen merkin jälkeen, jos sellaista on, muuten osoitin asetetaan nollaksi.

Se määritetään otsikkotiedostossa.

 Pohjalle 10 ja leveälle merkkijonolle L "12abc" Voimassa oleva numeerinen osa -> 12 Ensimmäinen merkki voimassa olevan numeerisen osan jälkeen -> a

wcstol () -prototyyppi

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

Wcstol () -funktio vie parametrinaan laajan merkkijonon, osoittimen laajaan merkkiin ja kokonaislukuarvopohjan, tulkitsee leveän merkkijonon sisällön annetun perusosan kokonaisluvuksi ja palauttaa pitkän int-arvon.

wcstol () -parametrit

  • str: Laaja merkkijono, jolla on integraaliluku.
  • str_end: Osoitin laajaan merkkiin. Str_end-arvon asettaa funktio seuraavalle merkille str: ssä viimeisen kelvollisen merkin jälkeen. Tämä parametri voi olla myös nollaosoitin, jolloin sitä ei käytetä.
  • base: Integraaliarvon pohja. Pohjan kelvollisten arvojen joukko on (0, 2, 3,…, 35, 36).

wcstol () Palautusarvo

Wcstol () -funktio palauttaa:

  • pitkä int-arvo (joka muunnetaan merkkijonosta).
  • 0, jos kelvollista muunnosta ei voitu suorittaa.

Esimerkki 1: Kuinka wcstol () -toiminto toimii?

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

Kun suoritat ohjelmaa, tulos on:

 Merkkijonoarvo = 101aa ᚶ Pitkä Int-arvo = 101 Loppumerkkijono = aa ᚶ Merkkijonoarvo = 59 Pitkä Int-arvo = 59 Loppumerkkijono =

Wcstol () -funktion kelvollinen kokonaisluku koostuu:

  • Valinnainen + tai - merkki.
  • Etuliite 0 oktaalialustalle (pätee vain, kun perus = 8 tai 0).
  • Etuliite 0x tai 0X heksadesimaalitasolle (pätee vain, kun perusarvo = 16 tai 0).
  • Numerosarja ja / tai aakkoset (jos pohja on suurempi kuin 10).

Parametrikannan kelvolliset arvot ovat (0, 2, 3,…, 35, 36). Tukiaseman 2 kelvollisten numeroiden joukko on (0, 1), tukiasemalle 3 on (0, 1, 2) ja niin edelleen. Alustojen 11-36 alussa voimassa olevat numerot sisältävät aakkoset. Tukiaseman 11 kelvollisten numeroiden joukko on (0, 1,…, 9, A, a), tukiasemalle 12 on (0, 1,…, 9, A, a, B, b) ja niin edelleen.

Esimerkki 2: wcstol () -funktio eri emäksillä

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

Kun suoritat ohjelmaa, tulos on:

 311bzϾϿ - pitkä Int kanssa base-5 = 81 päätemerkkijono = bzϾϿ 311bzϾϿ - Long Int kanssa base-5 = 5351 End String = zϾϿ 311bzϾϿ - pitkä Int kanssa base-5 = 5087231 End String = ϾϿ

Wcstol () -funktio jättää huomiotta kaikki johtavat välilyönnin merkit, kunnes ensisijainen ei-tyhjämerkki löytyy.

Yleensä wcstol () -funktion kelvollinen kokonaisluku argumentti on seuraavassa muodossa:

 (välilyönti) (- | +) (0 | 0x) (aakkosnumeeriset merkit)

Sitten tästä merkistä alkaen tarvitaan mahdollisimman monta merkkiä, jotka muodostavat kelvollisen kokonaislukuesityksen ja muuntaa ne pitkäksi int-arvoksi. Merkkijonosta jäljellä oleva tieto viimeisen kelvollisen merkin jälkeen jätetään huomiotta, eikä sillä ole vaikutusta tulokseen.

Esimerkki 3: wcstol () -toiminto välilyönnin ja virheellisen muunnoksen johtamiseen

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

Kun suoritat ohjelmaa, tulos on:

 205Ϣx - pitkä int kanssa base-5 = 10 päätemerkkijono = 5Ϣx xƜz201 - pitkä int kanssa base-12 = 0 end string = xƜz201

Jos perusta on 0, numeerinen perusta määritetään automaattisesti merkkijonon muotoa tarkastelemalla. Jos etuliite on 0, pohja on oktaali (8). Jos etuliite on 0x tai 0X, perusta on heksadesimaali (16), muuten perusta on desimaali (10).

Esimerkki 4: wcstol () -funktio perustan 0 kanssa

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

Kun suoritat ohjelmaa, tulos on:

 0539Ẅ - Long Int kanssa base-0 = 43 End string = 9Ẅ 0xa31 ע to Long Int with base-0 = 2609 End String = ע 119x ؏ to Long Int with base-0 = 119 End string = x ؏

Mielenkiintoisia artikkeleita...