C ++ wcstoul () - C ++ standartinė biblioteka

Funkcija wcstoul () C ++ interpretuoja plačios eilutės turinį kaip nepasirašytą vientisą nurodytos bazės skaičių ir grąžina jos reikšmę kaip nepasirašytą ilgąją int.

Funkcija wcstoul () taip pat nustato rodyklę, kuri nurodo pirmąjį simbolį po paskutinio plačiosios eilutės galiojančio simbolio, jei toks yra, kitaip rodyklė nustatoma kaip nulis.

 10 pagrindo ir plačios eilutės L "29hi $" tinkama skaitinė dalis -> 29 Pirmasis simbolis po galiojančios skaitinės dalies -> h

Tai apibrėžta antraštės faile.

wcstoul () prototipas

 nepasirašytas ilgas wcstoul (const wchar_t * str, wchar_t ** str_end, int bazė);

Funkcijos wcstoul () parametras yra plati eilutė str, žymeklis plataus simbolio str_end ir sveikojo skaičiaus reikšmė.

Tada jis aiškina plačios eilutės turinį kaip nepasirašytą vientisą nurodytos bazės skaičių ir grąžina nepasirašytą ilgąją int vertę.

wcstoul () parametrai

  • str: plati eilutė, turinti nepasirašytą integralų skaičių.
  • str_end: žymeklis, nukreipiantis į platų simbolį. Str_end reikšmę funkcija nustato kitam simboliui str po paskutinio galiojančio simbolio. Šis parametras taip pat gali būti nulinis rodyklė, tokiu atveju jis nenaudojamas.
  • bazė: integralo vertės pagrindas. Galiojančių bazių verčių rinkinys yra (0, 2, 3,…, 35, 36).

wcstoul () Grąžinimo vertė

Funkcija wcstoul () grąžinama:

  • nepasirašyta ilga int reikšmė (kuri konvertuojama iš eilutės).
  • 0, jei nepavyko atlikti galiojančio konvertavimo.

1 pavyzdys: Kaip veikia wcstoul () funkcija?

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

Kai paleisite programą, išvestis bus:

 Stygos reikšmė = 101aa ᚶ Nepasirašytos ilgosios Int vertės = 101 Pabaigos eilutė = aa ᚶ Stygos vertė = 59 Nepasirašytos ilgosios Int vertės = 59 Pabaigos eilutė =

Galiojančią sveikojo skaičiaus reikšmę wcstoul () funkcijai sudaro:

  • Pasirenkamas ženklas „+“ arba „-“.
  • Aštuntainio pagrindo priešdėlis 0 (taikomas tik tada, kai pagrindas = 8 arba 0).
  • Šešioliktainės bazės priešdėlis 0x arba 0X (taikomas tik tada, kai bazė = 16 arba 0).
  • Skaičių ir (arba) abėcėlių seka (jei pagrindas didesnis nei 10).

Jei argumento pradžioje yra minuso (-) ženklas, neigiamas skaičius yra netiesiogiai konvertuojamas į nepasirašytą ilgojo int tipą, kuris yra teigiamas skaičius.

Tinkamos parametrų vertės yra (0, 2, 3,…, 35, 36). Galiojančių 2 bazės skaitmenų rinkinys yra (0, 1), 3 pagrindo yra (0, 1, 2) ir pan. Bazėms, prasidedančioms nuo 11 iki 36, galiojantys skaitmenys apima abėcėles.

Galiojančių 11 bazės skaitmenų rinkinys yra (0, 1,…, 9, A, a), 12 pagrindo yra (0, 1,…, 9, A, a, B, b) ir pan.

2 pavyzdys: funkcija wcstoul () su skirtingais pagrindais

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

Kai paleisite programą, išvestis bus:

 Nuo 311bzϾϿ iki nepasirašyto ilgio vid. Su baze-5 = 81 pabaigos eilutė = bzϾϿ 311bzϾϿ iki nepasirašyto ilgo vid. Su bazine-12 = 5351 pabaigos eilutė = zϾϿ 311bzϾϿ iki nepasirašyto ilgo vid. Su baze-36 = 5087231 pabaigos eilutė = ϾϿ

Funkcija wcstoul () ignoruoja visus pagrindinius tarpų simbolius, kol bus rastas pagrindinis ne tarpų simbolis.

Apskritai, tinkamas sveiko skaičiaus argumentas wcstoul () funkcijai yra tokia:

 (tarpai) (- | +) (0 | 0x) (raidiniai ir skaitiniai simboliai)

Tada, pradedant nuo šio simbolio, reikia kuo daugiau simbolių, kurie suformuoja galiojantį sveikojo skaičiaus vaizdą ir paverčia juos nepasirašyta ilga int reikšme.

Nepaisant to, kas lieka eilutėje po paskutinio galiojančio simbolio, tai neturi įtakos rezultatui.

3 pavyzdys: funkcija wcstoul (), leidžianti įvesti tarpą ir netinkamą konversiją

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

Kai paleisite programą, išvestis bus:

 205Ϣx iki nepasirašyto ilgio vid. Su baze-5 = 10 pabaigos eilutė = 5Ϣx xƜz201 iki nepasirašyto ilgio vid. Su bazine-12 = 0 pabaigos eilutė = xƜz201

Jei pagrindas yra 0, skaitinė bazė nustatoma automatiškai, žiūrint į eilutės formatą. Jei priešdėlis yra 0, pagrindas yra aštuonkojis (8). Jei priešdėlis yra 0x arba 0X, pagrindas yra šešioliktainis (16), kitaip pagrindas yra dešimtainis (10).

4 pavyzdys: wcstoul () funkcija su 0 pagrindu

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

Kai paleisite programą, išvestis bus:

 0539Ẅ iki nepasirašyto ilgio vid. Su bazine-0 = 43 pabaigos eilute = 9Ẅ 0xa31 ע prie nepasirašyto ilgo vid.

Įdomios straipsniai...