Funkce wcstoull () v C ++ interpretuje obsah širokého řetězce jako nepodepsané celé číslo zadaného základu a vrátí jeho hodnotu jako nepodepsaný dlouhý dlouhý int.
Funkce wcstoull () také nastaví ukazatel tak, aby ukazoval na první znak za posledním platným znakem širokého řetězce, pokud existuje, jinak je ukazatel nastaven na null.
Pro základnu 10 a široký řetězec L "29hi $" Platná číselná část -> 29 První znak po platné číselné části -> h
Je definován v hlavičkovém souboru.
prototyp wcstoull ()
nepodepsaný dlouhý wcstoull (const wchar_t * str, wchar_t ** str_end, int base);
Funkce wcstoull () přebírá jako parametr široký řetězec str, ukazatel na široký znak str_end a celočíselnou hodnotu - základnu.
Poté interpretuje obsah širokého řetězce jako nepodepsané celé číslo dané základny a vrátí nepodepsanou hodnotu long long int.
Parametry wcstoull ()
- str: Široký řetězec mající zastoupení nepodepsaného integrálního čísla.
- str_end: Ukazatel na ukazatel na široký znak. Hodnota str_end je funkcí nastavena na další znak v str za posledním platným znakem. Tento parametr může být také nulový ukazatel, v takovém případě se nepoužívá.
- base: Základ integrální hodnoty. Sada platných hodnot pro základnu je (0, 2, 3,…, 35, 36).
wcstoull () Návratová hodnota
Funkce wcstoull () vrací:
- nepodepsaná dlouhá dlouhá int hodnota (která je převedena z řetězce).
- 0, pokud nelze provést platný převod.
Příklad 1: Jak funguje funkce 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; )
Když spustíte program, výstup bude:
Hodnota řetězce = 101aa ᚶ Hodnota Long Long Int bez znaménka = 101 End String = aa ᚶ Hodnota řetězce = 59 Hodnota Long Long Int bez znaménka = 59 End String =
Platná celočíselná hodnota pro funkci wcstoull () se skládá z:
- Volitelné znaménko + nebo -.
- Předpona 0 pro osmičkový základ (platí pouze v případě, že základna = 8 nebo 0).
- Prefix 0x nebo 0X pro hexadecimální základnu (platí pouze v případě, že základna = 16 nebo 0).
- Posloupnost číslic a / nebo abeced (pokud je základna větší než 10).
Pokud argument obsahuje na začátku znaménko minus (-), je záporné číslo implicitně převedeno na nepodepsaný typ long long int, což je kladné číslo.
Platné hodnoty pro základnu parametrů jsou (0, 2, 3,…, 35, 36). Sada platných číslic pro základnu 2 je (0, 1), pro základnu 3 je (0, 1, 2) atd. U základen začínajících od 11 do 36 zahrnují platné číslice abecedy.
Sada platných číslic pro základnu 11 je (0, 1,…, 9, A, a), pro základnu 12 je (0, 1, …, 9, A, a, B, b) atd.
Příklad 2: Funkce wcstoull () s různými základnami
#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; )
Když spustíte program, výstup bude:
311bzϾϿ na nepodepsaný Long Long Int se základnou-5 = 81 koncový řetězec = bzϾϿ 311bzϾϿ na nepodepsaný dlouhý dlouhý int se základnou-12 = 5351 koncový řetězec = zϾϿ 311bzϾϿ na nepodepsaný dlouhý dlouhý int se základnou-36 = 5087231 koncový řetězec = ϾϿ
Funkce wcstoull () ignoruje všechny úvodní prázdné znaky, dokud není nalezen primární znak bez mezer.
Platný celočíselný argument pro funkci wcstoull () má obecně následující formu:
(mezery) (- | +) (0 | 0x) (alfanumerické znaky)
Poté, počínaje tímto znakem, trvá co nejvíce znaků, které tvoří platnou celočíselnou reprezentaci a převádí je na nepodepsanou hodnotu long int. Cokoli, co zbylo z řetězce po posledním platném znaku, je ignorováno a nemá to žádný vliv na výsledek.
Příklad 3: Funkce wcstoull () pro vedení mezer a neplatnou konverzi
#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; )
Když spustíte program, výstup bude:
205Ϣx na nepodepsaný dlouhý dlouhý int se základnou-5 = 10 koncový řetězec = 5Ϣx xƜz201 na nepodepsaný dlouhý dlouhý int se základnou-12 = 0 koncový řetězec = xƜz201
Pokud je základna 0, číselná základna se určí automaticky při pohledu na formát řetězce. Pokud je předpona 0, základ je osmičkový (8). Pokud je předpona 0x nebo 0X, základna je šestnáctková (16), jinak je základna desítková (10).
Příklad 4: funkce wcstoull () se základnou 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; )
Když spustíte program, výstup bude:
0539Ẅ na nepodepsaný dlouhý dlouhý int se základnou-0 = 43 koncový řetězec = 9Ẅ 0xa31 ע na nepodepsaný dlouhý dlouhý int se základnou-0 = 2609 koncový řetězec = ע 119x ؏ na nepodepsaný dlouhý dlouhý int se základnou-0 = 119 koncový řetězec = x ؏