C ++ wcstol () - C ++ standardna biblioteka

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

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

Definirano je u datoteci zaglavlja.

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

prototip wcstol ()

 dugo wcstol (const wchar_t * str, wchar_t ** str_end, int baza);

Funkcija wcstol () uzima širok niz, pokazivač na široki znak i cjelobrojnu vrijednost - bazu kao svoj parametar, interpretira sadržaj širokog niza kao integralni broj zadane baze i vraća dugu int vrijednost.

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

wcstol () Povratna vrijednost

Funkcija wcstol () vraća:

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

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

Kada pokrenete program, izlaz će biti:

 Vrijednost niza = 101aa ᚶ Long Int vrijednost = 101 Krajnji niz = aa ᚶ Vrijednost niza = 59 Long Int vrijednost = 59 Krajnji niz =

Važeća cijela vrijednost za funkciju wcstol () 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: wcstol () funkcija 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 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; )

Kada pokrenete program, izlaz će biti:

 311bzϾϿ u Long Int s base-5 = 81 Krajnji niz = bzϾϿ 311bzϾϿ u Long Int s base-5 = 5351 Kraj String = zϾϿ 311bzϾϿ u Long Int s base-5 = 5087231 Kraj String = ϾϿ

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

Općenito, valjani cjelobrojni argument za funkciju wcstol () 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 wcstol () za vodeće razmake 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 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; )

Kada pokrenete program, izlaz će biti:

 205Ϣx do Long Int s bazom-5 = 10 Završni niz = 5Ϣx xƜz201 do 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: wcstol () funkcija 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 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; )

Kada pokrenete program, izlaz će biti:

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

Zanimljivi članci...