C ++ wcstoul () - Biblioteca standard C ++

Funcția wcstoul () în C ++ interpretează conținutul unui șir larg ca un număr integral nesemnat al bazei specificate și îi returnează valoarea ca un int lung nesemnat.

Funcția wcstoul () setează, de asemenea, un pointer pentru a indica primul caracter după ultimul caracter valid al șirului larg, dacă există, în caz contrar, pointerul este setat la nul.

 Pentru baza 10 și șirul larg L "29hi $" Partea numerică validă -> 29 Primul caracter după partea numerică validă -> h

Este definit în fișierul antet.

wcstoul () prototip

 wcstoul lung nesemnat (const wchar_t * str, wchar_t ** str_end, int base);

Funcția wcstoul () ia ca parametru un șir larg, un pointer către caracterul larg str_end și o valoare întreagă - bază.

Apoi interpretează conținutul șirului larg ca un număr integral nesemnat al bazei date și returnează o valoare int lungă nesemnată.

wcstoul () Parametri

  • str: Un șir larg având reprezentarea unui număr integral nesemnat.
  • str_end: un pointer către un pointer către un caracter larg. Valoarea str_end este setată de funcție la următorul caracter din str după ultimul caracter valid. Acest parametru poate fi, de asemenea, un pointer nul, caz în care nu este utilizat.
  • baza: baza valorii integrale. Setul de valori valide pentru bază este (0, 2, 3, …, 35, 36).

wcstoul () Valoare returnată

Funcția wcstoul () returnează:

  • o valoare int lungă nesemnată (care este convertită din șir).
  • 0 dacă nu s-a putut efectua o conversie validă.

Exemplul 1: Cum funcționează funcția 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; )

Când rulați programul, ieșirea va fi:

 Valoarea șirului = 101aa ᚶ Valoarea Int nesemnificată lungă = 101 Sfârșitul șirului = aa ᚶ Valoarea șirului = 59 Valoarea Int nesemnificată lungă = 59 Sfârșitul șirului =

O valoare întreagă validă pentru funcția wcstoul () constă din:

  • Un semn opțional + sau -.
  • Un prefix 0 pentru baza octală (se aplică numai atunci când baza = 8 sau 0).
  • Un prefix 0x sau 0X pentru baza hexazecimală (se aplică numai atunci când baza = 16 sau 0).
  • O succesiune de cifre și / sau alfabete (dacă baza este mai mare de 10).

Dacă argumentul conține un semn minus (-) la început, numărul negativ este implicit convertit într-un tip int nesemnat lung care este un număr pozitiv.

Valorile valide pentru baza parametrilor sunt (0, 2, 3, …, 35, 36). Un set de cifre valide pentru baza 2 este (0, 1), pentru baza 3 este (0, 1, 2) și așa mai departe. Pentru bazele care încep de la 11 la 36, ​​cifrele valide includ alfabete.

Setul de cifre valide pentru baza 11 este (0, 1, …, 9, A, a), pentru baza 12 este (0, 1, …, 9, A, a, B, b) și așa mai departe.

Exemplul 2: funcția wcstoul () cu baze diferite

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

Când rulați programul, ieșirea va fi:

 311bzϾϿ la Unsigned Long Int with base-5 = 81 End String = bzϾϿ 311bzϾϿ to Unsigned Long Int with base-12 = 5351 End String = zϾϿ 311bzϾϿ to Unsigned Long Int with base-36 = 5087231 End String = ϾϿ

Funcția wcstoul () ignoră toate caracterele principale ale spațiului alb până când se găsește caracterul primar non-spațiu.

În general, un argument întreg valid pentru funcția wcstoul () are următoarea formă:

 (spațiu alb) (- | +) (0 | 0x) (caractere alfanumerice)

Apoi, începând de la acest caracter, este nevoie de cât mai multe caractere care formează o reprezentare întreagă validă și le convertește într-o valoare int lungă nesemnată.

Orice a rămas din șir după ultimul caracter valid este ignorat și nu are niciun efect asupra rezultatului.

Exemplul 3: funcția wcstoul () pentru conducerea spațiului alb și conversia invalidă

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

Când rulați programul, ieșirea va fi:

 205Ϣx la Unsigned Long Int with base-5 = 10 End String = 5Ϣx xƜz201 to Unsigned Long Int with base-12 = 0 End String = xƜz201

Dacă baza este 0, baza numerică este determinată automat, examinând formatul șirului. Dacă prefixul este 0, baza este octală (8). Dacă prefixul este 0x sau 0X, baza este hexazecimală (16), altfel baza este zecimală (10).

Exemplul 4: funcția wcstoul () cu baza 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; )

Când rulați programul, ieșirea va fi:

 0539Ẅ la Unsigned Long Int with base-0 = 43 End String = 9Ẅ 0xa31 ע to Unsigned Long Int with base-0 = 2609 End String = ע 119x ؏ to Unsigned Long Int with base-0 = 119 End String = x ؏

Articole interesante...