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

Funkce wcstol () v C ++ interpretuje obsah širokého řetězce jako integrální číslo zadaného základu a vrací jeho hodnotu jako dlouhý int.

Funkce wcstol () 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.

Je definován v hlavičkovém souboru.

 Pro základnu 10 a široký řetězec L "12abc" Platná číselná část -> 12 První znak po platné číselné části -> a

prototyp wcstol ()

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

Funkce wcstol () přebírá široký řetězec, ukazatel na široký znak a celočíselnou hodnotu - základ jako svůj parametr, interpretuje obsah širokého řetězce jako celé číslo dané báze a vrací hodnotu long int.

Parametry wcstol ()

  • str: Široký řetězec mající reprezentaci celé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).

wcstol () Návratová hodnota

Funkce wcstol () vrací:

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

Příklad 1: Jak funguje funkce wcstol ()?

 #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; long value; int base = 10; value = wcstol(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstol(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"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 = 101 Koncový řetězec = aa ᚶ Hodnota řetězce = 59 Hodnota Long Int = 59 Koncový řetězec =

Platná celočíselná hodnota pro funkci wcstol () 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).

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 wcstol () 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 Long Int with base-5 = " << wcstol(str, &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Long Int with base-5 = " << wcstol(str, &end, 12) << endl; wcout << L"End String = " << end << endl << endl; wcout << str << L" to Long Int with base-5 = " << wcstol(str, &end, 36) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

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

 311bzϾϿ na Long Int se základnou-5 = 81 End String = bzϾϿ 311bzϾϿ na Long Int se základnou-5 = 5351 End String = zϾϿ 311bzϾϿ na Long Int se základnou-5 = 5087231 End String = ϾϿ

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

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

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

Poté, počínaje tímto znakem, trvá co nejvíce znaků, které vytvoří platnou celočíselnou reprezentaci a převede je na dlouhou hodnotu 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 wcstol () 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 Long Int with base-5 = " << wcstol(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Long Int with base-12 = " << wcstol(L"xu019cz201", &end, 12) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

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

 205Ϣx na Long Int se základnou-5 = 10 End String = 5Ϣx xƜz201 na Long Int se základnou-12 = 0 End String = 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 wcstol () 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 Long Int with base-0 = " << wcstol(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Long Int with base-0 = " << wcstol(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Long Int with base-0 = " << wcstol(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

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

 0539Ẅ na Long Int se základnou-0 = 43 End String = 9Ẅ 0xa31 ע na Long Int se základnou-0 = 2609 End String = ע 119x ؏ na Long Int se základnou-0 = 119 End String = x ؏

Zajímavé články...