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

Funkcia wcstoul () v C ++ interpretuje obsah širokého reťazca ako nepodpísané celé číslo zadaného základu a vráti jeho hodnotu ako nepodpísaný long int.

Funkcia wcstoul () 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 wcstoul ()

 nepodpísaný dlhý wcstoul (const wchar_t * str, wchar_t ** str_end, int základňa);

Funkcia wcstoul () 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 int.

Parametre wcstoul ()

  • 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).

wcstoul () Vrátená hodnota

Funkcia wcstoul () vráti:

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

Príklad 1: Ako funguje funkcia wcstoul ()?

 #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 value; int base = 10; value = wcstoul(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Unsigned Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoul(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Unsigned 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 Int = 101 Koncový reťazec = aa ᚶ Hodnota reťazca = 59 Nepodpísaná hodnota Long Int = 59 Koncový reťazec =

Platná celočíselná hodnota pre funkciu wcstoul () 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 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 wcstoul () 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 Int with base-5 = " << wcstoul(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-12 = " << wcstoul(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Unsigned Long Int with base-36 = " << wcstoul(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

Po spustení programu bude výstup:

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

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

Platný celočíselný argument pre funkciu wcstoul () 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 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 wcstoul () pre 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 Int with base-5 = " << wcstoul(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Unsigned Long Int with base-12 = " << wcstoul(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 Int so základňou-5 = 10 koncový reťazec = 5Ϣx xƜz201 na nepodpísaný 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 wcstoul () 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 Int with base-0 = " << wcstoul(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Unsigned Long Int with base-0 = " << wcstoul(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Unsigned Long Int with base-0 = " << wcstoul(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 Int so základňou-0 = 43 koncový reťazec = 9Ẅ 0xa31 ע na nepodpísaný Long Int so základňou-0 = 2609 koncový reťazec = ע 119x ؏ na nepodpísaný Long Int so základňou-0 = 119 koncový reťazec = x ؏

Zaujímavé články...