Funkcia wcstoull () v C ++ interpretuje obsah širokého reťazca ako nepodpísané celé číslo zadanej základne a vráti jeho hodnotu ako nepodpísaný long long int.
Funkcia wcstoull () 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 "29hi $" Platná číselná časť -> 29 Prvý znak za platnou číselnou časťou -> h
Je definované v hlavičkovom súbore.
prototyp wcstoull ()
nepodpísaný dlhý wcstoull (const wchar_t * str, wchar_t ** str_end, int základňa);
Funkcia wcstoull () 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 nepodpísané celé číslo danej základne a vráti nepodpísanú hodnotu long long int.
parametre wcstoull ()
- str: Široký reťazec, ktorý má reprezentáciu nepodpísaného integrálneho čísla.
- 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).
wcstoull () Vrátená hodnota
Vráti funkcia wcstoull ():
- nepodpísaná hodnota long long int (ktorá sa prevedie z reťazca).
- 0, ak nie je možné vykonať platný prevod.
Príklad 1: Ako funguje funkcia wcstoull ()?
#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 long value; int base = 10; value = wcstoull(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoull(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )
Po spustení programu bude výstup:
Hodnota reťazca = 101aa ᚶ Nepodpísaná hodnota Long Long Int = 101 Koncový reťazec = aa ᚶ Hodnota reťazca = 59 Nepodpísaná hodnota Long Long Int = 59 Koncový reťazec =
Platná celočíselná hodnota pre funkciu wcstoull () 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).
Ak argument obsahuje na začiatku znak mínus (-), záporné číslo sa implicitne prevedie na nepodpísaný typ long long int, čo je kladné číslo.
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 wcstoull () 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 Unsigned Long Long Int with base-5 = " << wcstoull(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-12 = " << wcstoull(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Long Int with base-36 = " << wcstoull(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )
Po spustení programu bude výstup:
311bzϾϿ na nepodpísaný Long Long Int so základňou-5 = 81 koncový reťazec = bzϾϿ 311bzϾϿ na nepodpísaný Long Long Int s bázou-5 = 81 koncový reťazec = zϾϿ 311bzϾϿ na nepodpísaný Long Long Int so základňou-36 = 5087231 koncový reťazec = ϾϿ
Funkcia wcstoull () ignoruje všetky vedúce medzery, kým sa nenájde primárny znak bez medzier.
Platný celočíselný argument pre funkciu wcstoull () má spravidla 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 nepodpísanú hodnotu long 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 wcstoull () 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 Unsigned Long Long Int with base-5 = " << wcstoull(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Unsigned Long Long Int with base-12 = " << wcstoull(L"xu019cz201", &end, 12) << endl; wcout << L"End String = " << end << endl << endl; return 0; )
Po spustení programu bude výstup:
205Ϣx na nepodpísaný Long Long Int s bázou-5 = 10 koncový reťazec = 5Ϣx xƜz201 na nepodpísaný Long Long Int s bázou-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 wcstoull () 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 Unsigned Long Long Int with base-0 = " << wcstoull(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Long Int with base-0 = " << wcstoull(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Long Int with base-0 = " << wcstoull(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )
Po spustení programu bude výstup:
0539Ẅ na nepodpísaný Long Long Int so základňou-0 = 43 koncový reťazec = 9Ẅ 0xa31 ע na nepodpísaný Long Long Int so základňou-0 = 119 koncový reťazec = 0