C ++ wcstol () - Biblioteca standard C ++

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

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

Este definit în fișierul antet.

 Pentru baza 10 și șirul larg L "12abc" Partea numerică validă -> 12 Primul caracter după partea numerică validă -> a

wcstol () prototip

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

Funcția wcstol () ia un șir larg, un pointer către caracter larg și o valoare întreagă - bază ca parametru, interpretează conținutul șirului larg ca un număr integral al bazei date și returnează o valoare int lungă.

wcstol () Parametri

  • str: Un șir larg având reprezentarea unui număr întreg.
  • 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).

wcstol () Valoare returnată

Funcția wcstol () returnează:

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

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

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

 Valoarea șirului = 101aa value Valoarea Int lung = 101 Sfârșitul șir = aa ᚶ Valoarea șirului = 59 Valoarea int lung = 59 Sfârșitul șir =

O valoare întreagă validă pentru funcția wcstol () 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).

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

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

 311bzϾϿ la Long Int cu baza-5 = 81 End String = bzϾϿ 311bzϾϿ la Long Int cu base-5 = 5351 End String = zϾϿ 311bzϾϿ la Long Int cu base-5 = 5087231 End String = ϾϿ

Funcția wcstol () ignoră toate caracterele de spațiu alb principal până când se găsește caracterul principal non-spațiu alb.

În general, un argument întreg valid pentru funcția wcstol () 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ă. Orice a rămas din șir după ultimul caracter valid este ignorat și nu are niciun efect asupra rezultatului.

Exemplul 3: funcția wcstol () 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 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; )

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

 205Ϣx la Long Int cu baza-5 = 10 End String = 5Ϣx xƜz201 la Long Int cu 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 wcstol () 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 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; )

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

 0539Ẅ la Long Int cu baza-0 = 43 End String = 9Ẅ 0xa31 ע la Long Int cu base-0 = 2609 End String = ע 119x ؏ la Long Int cu base-0 = 119 End String = x ؏

Articole interesante...