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

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

Funkcija wcstoll () 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 pagrindui ir plačiai eilutei L "31ÛÕÕ" Galiojanti skaitinė dalis -> 31 Pirmasis simbolis po galiojančios skaitinės dalies -> Û

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

wcstoll () prototipas

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

Funkcijos wcstoll () 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 vientisą nurodytos bazės skaičių ir grąžina ilgą ilgą int vertę.

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

wcstoll () Grąžinimo vertė

Funkcija wcstoll () grąžinama:

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

1 pavyzdys: Kaip veikia funkcija wcstoll ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"41u0166u0124xx"; wchar_t str2() = L"127"; wchar_t *end; long long value; int base = 10; value = wcstoll(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoll(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Kai paleisite programą, išvestis bus:

 Stygos vertė = 41ŦĤxx Long Long Int reikšmė = 41 End String = ŦĤxx String reikšmė = 127 Long Long Int vertė = 127 End String =

Tinkamą funkcijos wcstoll () sveikojo skaičiaus vertę 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 wcstoll () 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 Long Int with base-5 = " << wcstoll(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Long Long Int with base-12 = " << wcstoll(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Long Long Int with base-36 = " << wcstoll(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Kai paleisite programą, išvestis bus:

 311bzϾϿ į ilgą ilgą vid. Su baze-5 = 81 pabaigos eilutė = bzϾϿ 311bzϾϿ į ilgą ilgą vid. Su baze-12 = 5351 galinė eilutė = zϾϿ 311 bzϾϿ į ilgą ilgą vidinę int. Su baze-36 = 5087231 pabaigos eilutė = ϾϿ

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

Apskritai, galiojantis sveiko skaičiaus argumentas, skirtas funkcijai wcstoll (), yra tokios formos:

 (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 wcstoll (), 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 Long Int with base-5 = " << wcstoll(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Long Long Int with base-12 = " << wcstoll(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 ilgio vid. Su bazine-5 = 10 pabaigos eilutė = 5Ϣx xƜz201 iki ilgo 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 wcstoll () 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 Long Int with base-0 = " << wcstoll(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Long Long Int with base-0 = " << wcstoll(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Long Long Int with base-0 = " << wcstoll(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Kai paleisite programą, išvestis bus:

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

Įdomios straipsniai...