C ++ wcstoll () - C ++ standardna biblioteka

Funkcija wcstoll () u C ++-u interpretira sadržaj širokog niza kao integralni broj navedene baze i vraća njegovu vrijednost kao long long int.

Funkcija wcstoll () također postavlja pokazivač koji pokazuje na prvi znak nakon zadnjeg važećeg znaka širokog niza ako postoji, u suprotnom je pokazivač postavljen na nulu.

 Za bazu 10 i široki niz L "31ÛÕÕ" Važeći numerički dio -> 31 Prvi znak nakon važećeg numeričkog dijela -> Û

Definirano je u datoteci zaglavlja.

prototip wcstoll ()

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

Funkcija wcstoll () za svoj parametar uzima široki niz str, pokazivač na široki znak str_end i cjelobrojnu vrijednost - bazu.

Zatim interpretira sadržaj širokog niza kao integralni broj zadane baze i vraća long long int vrijednost.

wcstoll () parametri

  • str: Široki niz koji ima prikaz integralnog broja.
  • str_end: pokazivač na pokazivač na široki znak. Vrijednost str_end funkcija postavlja na sljedeći znak u str nakon zadnjeg važećeg znaka. Ovaj parametar također može biti null pokazivač, u kojem se slučaju ne koristi.
  • baza: Baza integralne vrijednosti. Skup valjanih vrijednosti za bazu je (0, 2, 3,…, 35, 36).

wcstoll () Povratna vrijednost

Funkcija wcstoll () vraća:

  • long long int vrijednost (koja se pretvara iz niza).
  • 0 ako se nije mogla izvršiti valjana pretvorba.

Primjer 1: Kako funkcionira funkcija 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; )

Kada pokrenete program, izlaz će biti:

 Vrijednost niza = 41ŦĤxx Long Long Int vrijednost = 41 Krajnji niz = ŦĤxx Vrijednost niza = 127 Long Long Int vrijednost = 127 End String =

Valjana cijela vrijednost za funkciju wcstoll () sastoji se od:

  • Izborni znak + ili -.
  • Prefiks 0 za osminsku bazu (odnosi se samo kada je baza = 8 ili 0).
  • Prefiks 0x ili 0X za heksadecimalnu bazu (odnosi se samo kada je baza = 16 ili 0).
  • Slijed znamenki i / ili abeceda (ako je baza veća od 10).

Važeće vrijednosti za bazu parametara su (0, 2, 3,…, 35, 36). Skup valjanih znamenki za bazu 2 je (0, 1), za bazu 3 je (0, 1, 2) i tako dalje. Za baze koje počinju od 11 do 36, valjane znamenke uključuju abecedu.

Skup valjanih znamenki za bazu 11 je (0, 1, …, 9, A, a), za bazu 12 je (0, 1, …, 9, A, a, B, b) i tako dalje.

Primjer 2: funkcija wcstoll () s različitim bazama

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

Kada pokrenete program, izlaz će biti:

 311bzϾϿ za Long Long Int s bazom-5 = 81 Krajnji niz = bzϾϿ 311bzϾϿ za Long Long Int s bazom-12 = 5351 Kraj String = zϾϿ 311bzϾϿ za Long Long Int s bazom-36 = 5087231 Završni niz = ϾϿ

Funkcija wcstoll () zanemaruje sve vodeće razmake dok se ne pronađe primarni znak koji nije razmak.

Općenito, valjani cjelobrojni argument za funkciju wcstoll () ima sljedeći oblik:

 (razmak) (- | +) (0 | 0x) (alfanumerički znakovi)

Zatim, počevši od ovog znaka, potrebno je što više znakova koji čine valjanu cjelobrojnu predstavu i pretvaraju ih u dugu int vrijednost.

Sve što ostane od niza nakon zadnjeg važećeg znaka, zanemaruje se i nema utjecaja na rezultat.

Primjer 3: funkcija wcstoll () za vodeći razmak i nevaljanu pretvorbu

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

Kada pokrenete program, izlaz će biti:

 205Ϣx do Long Long Int s bazom-5 = 10 Krajnji niz = 5Ϣx xƜz201 do Long Long Int s bazom-12 = 0 Završni niz = xƜz201

Ako je osnova 0, numerička baza se automatski određuje gledanjem formata niza. Ako je prefiks 0, osnova je osmica (8). Ako je prefiks 0x ili 0X, baza je heksadecimalna (16), inače je baza decimalna (10).

Primjer 4: funkcija wcstoll () s bazom 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; )

Kada pokrenete program, izlaz će biti:

 0539Ẅ na Long Long Int s bazom-0 = 43 Krajnji niz = 9Ẅ 0xa31 ע na Long Long Int s bazom-0 = 2609 Završni niz = ע 119x ؏ na Long Long Int s bazom-0 = 119 Krajnji niz = x ؏

Zanimljivi članci...