C ++ wcstoul () - C ++ -kirjasto

C ++: n wcstoul () -funktio tulkitsee leveän merkkijonon sisällön allekirjoittamattomaksi integroiduksi numeroksi määritetylle alustalle ja palauttaa sen arvon allekirjoittamattomana pitkänä int.

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

 Pohjalle 10 ja leveälle merkkijonolle L "29hi $" Voimassa oleva numeerinen osa -> 29 Ensimmäinen merkki kelvollisen numeerisen osan jälkeen -> h

Se määritetään otsikkotiedostossa.

wcstoul () -prototyyppi

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

Wcstoul () -funktio ottaa parametriksi leveän merkkijonon, osoittimen leveään merkkiin str_end ja kokonaislukuarvopohjan.

Sitten se tulkitsee leveän merkkijonon sisällön allekirjoittamattomaksi integraaliluvuksi tietylle alustalle ja palauttaa allekirjoittamattoman pitkän int-arvon.

wcstoul () -parametrit

  • str: Leveä merkkijono, jolla on allekirjoittamaton kokonaisluku.
  • 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).

wcstoul () Palautusarvo

Wcstoul () -funktio palauttaa:

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

Esimerkki 1: Kuinka wcstoul () -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; 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; )

Kun suoritat ohjelmaa, tulos on:

 Merkkijonoarvo = 101aa ᚶ Allekirjoittamaton pitkä int-arvo = 101 Loppumerkkijono = aa ᚶ Merkkijonoarvo = 59 Allekirjoittamaton pitkä int -arvo = 59 Loppumerkkijono =

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

Jos argumentti sisältää miinusmerkin (-) alussa, negatiivinen luku muunnetaan implisiittisesti allekirjoittamattomaksi pitkäksi int-tyypiksi, joka on positiivinen luku.

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: wcstoul () -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 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; )

Kun suoritat ohjelmaa, tulos on:

 311bzϾϿ - merkitsemätön pitkä int kanssa base-5 = 81 loppumerkkijono = bzϾϿ 311bzϾϿ - allekirjoittamaton pitkä int int.

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

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

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

Sitten tästä merkistä alkaen tarvitaan mahdollisimman monta merkkiä, joka muodostaa kelvollisen kokonaislukuesityksen ja muuntaa ne allekirjoittamattomaksi 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: wcstoul () -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 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; )

Kun suoritat ohjelmaa, tulos on:

 205Ϣx - merkitsemätön pitkä int kanssa base-5 = 10 loppumerkkijonoa = 5Ϣx xƜz201 - allekirjoittamaton pitkä int int.

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: wcstoul () -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 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; )

Kun suoritat ohjelmaa, tulos on:

 0539Ẅ merkitsemättömään pitkään keskiarvoon base-0 = 43 loppumerkkijonolla = 9Ẅ 0xa31 ע merkitsemättömään pitkään keskiarvoon base-0 = 2609 merkkijonolla = ע 119x ؏ merkitsemättömään pitkään keskiarvoon base-0 = 119 loppumerkkijonolla = x ؏

Mielenkiintoisia artikkeleita...