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

Funkcija wcstol () C ++ interpretuoja plačios eilutės turinį kaip vientisą nurodytos bazės skaičių ir grąžina jos vertę kaip ilgą int.

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

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

 10 pagrindo ir plačios eilutės L „12abc“ tinkama skaitmeninė dalis -> 12 Pirmasis simbolis po galiojančios skaitinės dalies -> a

wcstol () prototipas

 ilgas wcstol (const wchar_t * str, wchar_t ** str_end, int bazė);

Funkcija wcstol () ima plačią eilutę, žymeklį į platųjį simbolį ir sveiko skaičiaus reikšmę - bazę kaip parametrą, plačios eilutės turinį interpretuoja kaip vientisą nurodytos bazės skaičių ir grąžina ilgą int reikšmę.

wcstol () parametrai

  • str: plati eilutė, turinti vientisą 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).

wcstol () Grąžinimo vertė

Funkcija wcstol () grąžinama:

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

1 pavyzdys: Kaip veikia wcstol () 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; 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; )

Kai paleisite programą, išvestis bus:

 Stygos reikšmė = 101aa ᚶ Ilgosios Int reikšmė = 101 Pabaigos eilutė = aa ᚶ Stygos vertė = 59 Ilgosios Int vertė = 59 Pabaigos eilutė =

Tinkamą funkcijos wcstol () sveiką skaičių 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).

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 wcstol () 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 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; )

Kai paleisite programą, išvestis bus:

 Nuo 311bzϾϿ iki „Long Int“ su baze-5 = 81 pabaigos eilutė = bzϾϿ 311bzϾϿ iki „Long Int“ su baze-5 = 5351 pabaigos eilutė = zϾϿ 311bzϾϿ į ilgą vid. Su „base-5“ = 5087231 pabaigos eilutė = ϾϿ

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

Apskritai, tinkamas sveiko skaičiaus argumentas, skirtas funkcijai wcstol (), turi tokią formą:

 (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 ilga int reikšme. Nepaisant to, kas lieka eilutėje po paskutinio galiojančio simbolio, tai neturi įtakos rezultatui.

3 pavyzdys: funkcija wcstol (), skirta pirmauti tarpams ir netinkamai konvertuoti

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

Kai paleisite programą, išvestis bus:

 Nuo 205Ϣx iki ilgo vid. Su bazine-5 = 10 pabaigos eilutė = 5Ϣx xƜz201 iki ilgo vid. Su baze-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: funkcija wcstol () 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 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; )

Kai paleisite programą, išvestis bus:

 Nuo 0539Ẅ iki ilgo vid. Su bazine-0 = 43 pabaigos eilutė = 9Ẅ 0xa31

Įdomios straipsniai...