C ++ wcstoul () - standardní knihovna C ++

Funkce wcstoul () v C ++ interpretuje obsah širokého řetězce jako nepodepsané celé číslo zadaného základu a vrátí jeho hodnotu jako nepodepsaný dlouhý int.

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

 nepodepsaný dlouhý wcstoul (const wchar_t * str, wchar_t ** str_end, int base);

Funkce wcstoul () má jako parametr široký řetězec str, ukazatel na široký znak str_end a celočíselnou hodnotu base.

Poté interpretuje obsah širokého řetězce jako nepodepsané celé číslo dané základny a vrátí nepodepsanou hodnotu long int.

Parametry wcstoul ()

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

wcstoul () Vrátit hodnotu

Funkce wcstoul () vrací:

  • nepodepsaná hodnota long int (která je převedena z řetězce).
  • 0, pokud nelze provést platný převod.

Příklad 1: Jak funguje funkce 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; )

Když spustíte program, výstup bude:

 Hodnota řetězce = 101aa ᚶ Hodnota Long Int bez znaménka = 101 End String = aa ᚶ Hodnota řetězce = 59 Hodnota Long Int bez znaménka = 59 End String =

Platná celočíselná hodnota pro funkci wcstoul () 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 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 wcstoul () s různými bázemi

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

Když spustíte program, výstup bude:

 311bzϾϿ na nepodepsaný dlouhý int se základnou-5 = 81 koncový řetězec = bzϾϿ 311bzϾϿ na nepodepsaný dlouhý int se základnou-12 = 5351 koncový řetězec = zϾϿ 311bzϾϿ na nepodepsaný dlouhý int se základnou-36 = 5087231 koncový řetězec = ϾϿ

Funkce wcstoul () ignoruje všechny úvodní prázdné znaky, dokud není nalezen primární znak bez mezer.

Platný celočíselný argument pro funkci wcstoul () má obecně následující podobu:

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

Když spustíte program, výstup bude:

 205Ϣx na nepodepsaný dlouhý int se základnou-5 = 10 koncový řetězec = 5Ϣx xƜz201 na nepodepsaný 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 wcstoul () 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 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; )

Když spustíte program, výstup bude:

 0539Ẅ na nepodepsaný dlouhý int se základnou-0 = 43 koncový řetězec = 9Ẅ 0xa31 ע na nepodepsaný dlouhý int se základnou-0 = 2609 koncový řetězec = ע 119x ؏ na nepodepsaný dlouhý int se základnou-0 = 119 koncový řetězec = x ؏

Zajímavé články...