C ++ wcstoll () - biblioteka standardowa C ++

Funkcja wcstoll () w C ++ interpretuje zawartość szerokiego ciągu znaków jako liczbę całkowitą określonej bazy i zwraca jego wartość jako long long int.

Funkcja wcstoll () ustawia również wskaźnik wskazujący pierwszy znak po ostatnim prawidłowym znaku szerokiego ciągu, jeśli taki istnieje, w przeciwnym razie wskaźnik jest ustawiany na null.

 Dla podstawy 10 i szerokiego ciągu L "31ÛÕÕ" Prawidłowa część numeryczna -> 31 Pierwszy znak po prawidłowej części numerycznej -> Û

Jest zdefiniowany w pliku nagłówkowym.

prototyp wcstoll ()

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

Funkcja wcstoll () przyjmuje jako parametr szeroki łańcuch, wskaźnik do szerokiego znaku str_end i wartość całkowitą - base.

Następnie interpretuje zawartość szerokiego ciągu jako liczbę całkowitą z danej bazy i zwraca wartość typu long long int.

wcstoll () Parametry

  • str: Szeroki ciąg reprezentujący liczbę całkowitą.
  • str_end: wskaźnik do wskaźnika do szerokiego znaku. Wartość str_end jest ustawiana przez funkcję na następny znak w str po ostatnim prawidłowym znaku. Ten parametr może być również wskaźnikiem zerowym, w którym to przypadku nie jest używany.
  • podstawa: podstawa wartości całkowitej. Zestaw poprawnych wartości dla podstawy to (0, 2, 3,…, 35, 36).

wcstoll () Zwracana wartość

Funkcja wcstoll () zwraca:

  • long long int (która jest konwertowana z ciągu).
  • 0, jeśli nie można przeprowadzić żadnej prawidłowej konwersji.

Przykład 1: Jak działa funkcja 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; )

Po uruchomieniu programu wynik będzie następujący:

 Wartość ciągu = 41ŦĤxx Wartość Long Long Int = 41 End String = ŦĤxx Wartość ciągu = 127 Wartość Long Long Int = 127 End String =

Prawidłowa liczba całkowita funkcji wcstoll () składa się z:

  • Opcjonalny znak + lub -.
  • Prefiks 0 dla podstawy ósemkowej (ma zastosowanie tylko wtedy, gdy podstawa = 8 lub 0).
  • Prefiks 0x lub 0X dla szesnastkowej podstawy (ma zastosowanie tylko wtedy, gdy podstawa = 16 lub 0).
  • Sekwencja cyfr i / lub alfabetów (jeśli podstawa jest większa niż 10).

Poprawne wartości parametru base to (0, 2, 3,…, 35, 36). Zestaw prawidłowych cyfr dla podstawy 2 to (0, 1), dla podstawy 3 to (0, 1, 2) i tak dalej. W przypadku podstaw zaczynających się od 11 do 36 prawidłowe cyfry obejmują alfabety.

Zbiór prawidłowych cyfr dla podstawy 11 to (0, 1,…, 9, A, a), dla podstawy 12 to (0, 1,…, 9, A, a, B, b) i tak dalej.

Przykład 2: funkcja wcstoll () z różnymi bazami

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

Po uruchomieniu programu wynik będzie następujący:

 311bzϾϿ do Long Long Int z podstawą-5 = 81 End String = bzϾϿ 311bzϾϿ do Long Long Int z podstawą-12 = 5351 End String = zϾϿ 311bzϾϿ do Long Long Int z podstawą-36 = 5087231 End String = ϾϿ

Funkcja wcstoll () ignoruje wszystkie wiodące białe znaki, dopóki nie zostanie znaleziony główny znak niebędący białymi znakami.

Ogólnie rzecz biorąc, prawidłowy argument będący liczbą całkowitą funkcji wcstoll () ma następującą postać:

 (białe znaki) (- | +) (0 | 0x) (znaki alfanumeryczne)

Następnie, zaczynając od tego znaku, przyjmuje jak najwięcej znaków, które tworzą prawidłową reprezentację liczby całkowitej i konwertują je na wartość typu long int.

Cokolwiek pozostało z ciągu po ostatnim prawidłowym znaku, jest ignorowane i nie ma wpływu na wynik.

Przykład 3: funkcja wcstoll () dla wiodących białych znaków i nieprawidłowej konwersji

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

Po uruchomieniu programu wynik będzie następujący:

 205Ϣx do Długi Długi Int z podstawą-5 = 10 Ciąg końcowy = 5Ϣx xƜz201 do Długi Długi Int z podstawą-12 = 0 Ciąg końcowy = xƜz201

Jeśli podstawą jest 0, podstawa liczbowa jest określana automatycznie na podstawie formatu ciągu. Jeśli przedrostkiem jest 0, podstawą jest ósemkowa (8). Jeśli prefiks to 0x lub 0X, podstawą jest szesnastkowa (16), w przeciwnym razie podstawa jest dziesiętna (10).

Przykład 4: funkcja wcstoll () o podstawie 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; )

Po uruchomieniu programu wynik będzie następujący:

 0539Ẅ do Długi Długi Int z podstawą-0 = 43 Koniec Ciąg = 9Ẅ 0xa31 ע do Długi Długi Int z podstawą-0 = 2609 Koniec Ciąg = ע 119x ؏ do Długi Długi Int z podstawą-0 = 119 Koniec Ciąg = x ؏

Interesujące artykuły...