C ++ wcstol () - biblioteka standardowa C ++

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

Funkcja wcstol () ustawia także 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.

Jest zdefiniowany w pliku nagłówkowym.

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

prototyp wcstol ()

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

Funkcja wcstol () przyjmuje szeroki łańcuch, wskaźnik do szerokiego znaku i wartość całkowitą - base jako swój parametr, interpretuje zawartość szerokiego ciągu jako liczbę całkowitą podanej bazy i zwraca wartość typu long int.

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

wcstol () Wartość zwracana

Funkcja wcstol () zwraca:

  • długa wartość 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 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; )

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

 Wartość ciągu = 101aa ᚶ Wartość typu Long Int = 101 End String = aa ᚶ Wartość ciągu = 59 Wartość Long Int = 59 End String =

Prawidłowa liczba całkowita funkcji wcstol () 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 wcstol () 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 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; )

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

 311bzϾϿ do Long Int z podstawą-5 = 81 End String = bzϾϿ 311bzϾϿ to Long Int with base-5 = 5351 End String = zϾϿ 311bzϾϿ to Long Int with base-5 = 5087231 End String = ϾϿ

Funkcja wcstol () 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, poprawny argument będący liczbą całkowitą funkcji wcstol () 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 wcstol () 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 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; )

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

 205Ϣx do Długi Int z podstawą-5 = 10 Ciąg końcowy = 5Ϣx xƜz201 do 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 wcstol () 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 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; )

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

 0539Ẅ do Długi Int z podstawą-0 = 43 End String = 9Ẅ 0xa31 ע do Długi Int z podstawą-0 = 2609 End String = ע 119x ؏ do Long Int z podstawą-0 = 119 End String = x ؏

Interesujące artykuły...