C ++ wcstoll () - štandardná knižnica C ++

Funkcia wcstoll () v C ++ interpretuje obsah širokého reťazca ako integrálne číslo zadaného základu a vráti jeho hodnotu ako dlhý dlhý int.

Funkcia wcstoll () tiež nastaví ukazovateľ tak, aby ukazoval na prvý znak za posledným platným znakom širokého reťazca, ak existuje, inak je ukazovateľ nastavený na hodnotu null.

 Pre základňu 10 a široký reťazec L "31ÛÕÕ" Platná číselná časť -> 31 Prvý znak za platnou číselnou časťou -> Û

Je definované v hlavičkovom súbore.

prototyp wcstoll ()

 long long wcstoll (const wchar_t * str, wchar_t ** str_end, int base);

Funkcia wcstoll () berie ako parameter široký reťazec str, ukazovateľ na široký znak str_end a celočíselnú hodnotu base.

Potom interpretuje obsah širokého reťazca ako integrálne číslo danej základne a vráti hodnotu long long int.

Parametre wcstoll ()

  • str: Široký reťazec, ktorý má celé číslo.
  • str_end: Ukazovateľ na ukazovateľ na široký znak. Hodnota str_end je nastavená funkciou na nasledujúci znak v str za posledným platným znakom. Týmto parametrom môže byť tiež nulový ukazovateľ, v takom prípade sa nepoužije.
  • base: Základ celočíselnej hodnoty. Sada platných hodnôt pre základňu je (0, 2, 3,…, 35, 36).

wcstoll () Vrátená hodnota

Vráti funkcia wcstoll ():

  • dlhá dlhá hodnota int (ktorá sa prevedie z reťazca).
  • 0, ak nie je možné vykonať platný prevod.

Príklad 1: Ako funguje funkcia 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; )

Po spustení programu bude výstup:

 Hodnota reťazca = 41ŦĤxx Long Long Int hodnota = 41 Koncový reťazec = ŦĤxx Hodnota reťazca = 127 Long Long Int hodnota = 127 Koncový reťazec =

Platná celočíselná hodnota pre funkciu wcstoll () pozostáva z:

  • Voliteľný znak + alebo -.
  • Predpona 0 pre osmičkový základ (platí iba v prípade, že základňa = 8 alebo 0).
  • Predpona 0x alebo 0X pre hexadecimálny základ (platí iba v prípade, že základňa = 16 alebo 0).
  • Postupnosť číslic a / alebo abecedy (ak je základňa väčšia ako 10).

Platné hodnoty pre základ parametrov sú (0, 2, 3,…, 35, 36). Sada platných číslic pre základňu 2 je (0, 1), pre základňu 3 je (0, 1, 2) atď. Pre základy začínajúce od 11 do 36 zahŕňajú platné číslice abecedy.

Sada platných číslic pre základňu 11 je (0, 1, …, 9, A, a), pre základňu 12 je (0, 1, …, 9, A, a, B, b) atď.

Príklad 2: Funkcia wcstoll () s rôznymi bázami

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

Po spustení programu bude výstup:

 311bzϾϿ na Long Long Int so základňou-5 = 81 Koncový reťazec = bzϾϿ 311bzϾϿ na Long Long Int so základňou-12 = 5351 Koncový reťazec = zϾϿ 311bzϾϿ na Long Long Int so základňou-36 = 5087231 Koncový reťazec = ϾϿ

Funkcia wcstoll () ignoruje všetky vedúce medzery, kým sa nenájde primárny znak bez medzier.

Platný celočíselný argument pre funkciu wcstoll () má vo všeobecnosti tento tvar:

 (medzery) (- | +) (0 | 0x) (alfanumerické znaky)

Potom, počnúc týmto znakom, trvá čo najviac znakov, ktoré vytvoria platné celočíselné zastúpenie a prevedú ich na dlhú hodnotu int.

Čokoľvek, čo zostane z reťazca po poslednom platnom znaku, je ignorované a nemá to žiadny vplyv na výsledok.

Príklad 3: Funkcia wcstoll () na vedenie medzery a neplatnú konverziu

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

Po spustení programu bude výstup:

 205Ϣx až Long Long Int so základňou-5 = 10 koncový reťazec = 5Ϣx xƜz201 až Long Long Int so základňou-12 = 0 koncový reťazec = xƜz201

Ak je báza 0, číselná báza sa určí automaticky pri pohľade na formát reťazca. Ak je predpona 0, základňa je osmičková (8). Ak je predpona 0x alebo 0X, základ je šestnástkový (16), inak je základ desatinný (10).

Príklad 4: funkcia wcstoll () so základňou 0

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

Po spustení programu bude výstup:

 0539Ẅ na Long Long Int so základňou-0 = 43 Koncový reťazec = 9Ẅ 0xa31 ע na Long Long Int so základňou-0 = 2609 Koncový reťazec = ע 119x ؏ na Long Long Int so základňou-0 = 119 Koncový reťazec = x ؏

Zaujímavé články...