C ++ wcstoll () - Biblioteca standard C ++

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

Funcția wcstoll () 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 "31ÛÕÕ" Partea numerică validă -> 31 Primul caracter după partea numerică validă>> Û

Este definit în fișierul antet.

wcstoll () prototip

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

Funcția wcstoll () are 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 al bazei date și returnează o valoare int lungă.

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

wcstoll () Valoare returnată

Funcția wcstoll () returnează:

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

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

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

 Valoarea șirului = 41ŦĤxx Long Long Int value = 41 End String = ŦĤxx Valoarea șirului = 127 Long Long Int value = 127 End String =

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

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

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

Funcția wcstoll () 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 wcstoll () 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 wcstoll () pentru spațiul alb principal ș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 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; )

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

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

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

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

Articole interesante...