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

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

Funkce wcstoll () 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 "31ÛÕÕ" Platná číselná část -> 31 První znak za platnou číselnou částí -> Û

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

prototyp wcstoll ()

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

Funkce wcstoll () má 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 celé číslo dané základny a vrátí hodnotu long long int.

Parametry wcstoll ()

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

wcstoll () Návratová hodnota

Funkce wcstoll () vrací:

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

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

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"41u0166u0124xx"; wchar_t str2() = L"127"; wchar_t *end; long long value; int base = 10; value = wcstoll(str1, &end, base); wcout << L"String value = " << str1 << endl; wcout << L"Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstoll(str2, &end, base); wcout << L"String value = " << str2 << endl; wcout << L"Long Long Int value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Hodnota řetězce = 41ŦĤxx Long Long Int hodnota = 41 End String = ŦĤxx Hodnota řetězce = 127 Long Long Int hodnota = 127 End String =

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

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

 311bzϾϿ na Long Long Int se základnou-5 = 81 Koncový řetězec = bzϾϿ 311bzϾϿ na Long Long Int se základnou-12 = 5351 Koncový řetězec = zϾϿ 311bzϾϿ na Long Long Int se základnou-36 = 5087231 Koncový řetězec = ϾϿ

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

Platný celočíselný argument pro funkci wcstoll () 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 wcstoll () 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 Long Int with base-5 = " << wcstoll(L" 205u03e2x", &end, 5) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"xu019cz201 to Long Long Int with base-12 = " << wcstoll(L"xu019cz201", &end, 12) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

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

 205Ϣx až Long Long Int se základnou-5 = 10 koncový řetězec = 5Ϣx xƜz201 až Long Long 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 wcstoll () 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 Long Int with base-0 = " << wcstoll(L"0539u1e84", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"0xa31u05e2 to Long Long Int with base-0 = " << wcstoll(L"0xa31u05e2", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; wcout << L"119xu060f to Long Long Int with base-0 = " << wcstoll(L"119xu060f", &end, 0) << endl; wcout << L"End String = " << end << endl << endl; return 0; )

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

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

Zajímavé články...