W tym artykule poznasz funkcję std::stol w C++, jej składnię i przykłady.
Co to jest std::stol()?
The Standardowa biblioteka szablonów (STL) w C++ zawiera std::stol() funkcję, która została specjalnie stworzona do konwersji ciągi do długich liczb całkowitych . Ta funkcja jest szczególnie przydatna podczas pracy z danymi wprowadzanymi przez użytkownika lub odczytywaniem danych ze źródeł zewnętrznych, gdzie dane wejściowe są zwykle podawane w formacie ciągu znaków. Zwraca równoważną długą liczbę całkowitą po otrzymaniu ciągu znaków jako danych wejściowych. Wyjątek typu std::invalid_argument lub std::out_of_range jest zgłaszany, jeśli konwersja nie jest możliwa lub jeśli ciąg wejściowy zawiera znaki, które nie są częścią prawidłowej liczby.
Składnia:
Ma następującą składnię:
long std::stol(const std::string& str, size_t* pos = 0, int podstawa = 10);
Konwersja ciągu Java na liczbę całkowitą
str: Tekst, który należy zmienić na długą liczbę całkowitą.
Pozycja: Indeks pierwszego nieprzekonwertowanego znaku ciągu, przechowywany jako wskaźnik do obiektu size_t. Jeśli nie jest to wymagane, ten opcjonalny parametr można ustawić na nullptr.
baza: Podstawa liczbowa konwersji. Dziesięć to wartość domyślna.
jak przerobić w Photoshopie
Wartość zwracana: Wartość liczbowa, która została przeanalizowana z ciągu wejściowego, jest zwracana przez funkcję jako długa liczba całkowita.
Wyjątki: Funkcja zgłasza wyjątek, jeśli nie można ukończyć konwersji lub jeśli znaki w ciągu wejściowym są nieprawidłowe. Jeśli nie można wykonać konwersji, możliwe są wyjątki std::nieprawidłowy_argument I std::out_of_range jeśli przeliczona wartość jest większa niż zakres możliwy do reprezentowania przez długi czas.
Przypadków użycia:
std::stol() jest przydatny do przekształcania danych liczbowych otrzymywanych od użytkowników w formacie ciągu znaków na typ numeryczny, aby można je było dalej przetwarzać.
Odczyt danych liczbowych z plików zawierających ciągi znaków jako reprezentację danych.
Walidacja danych polega na potwierdzeniu, że dane wprowadzone przez użytkownika dokładnie reprezentują długie liczby, poprzez ich walidację i weryfikację.
Przykładowy program 1:
Weźmy przykład ilustrujący użycie funkcja std::stol w C++.
#include #include int main() { std::string numStr = '12345'; try { long result = std::stol(numStr); std::cout << 'Converted value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Invalid argument: ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Out of range: ' << e.what() << std::endl; } return 0; }
Wyjście:
polecenie seda
Wyjaśnienie:
- Zmienna łańcuchowa o nazwie liczbaStr jest inicjowany wartością „12345” na początku programu.
- Kod przechodzi do bloku try, sygnalizując, że spróbuje uruchomić zawarte w nim instrukcje. W tym miejscu omówiono potencjalne wyjątki.
- Program próbuje użyć std::stol() aby przekształcić ciąg numStr w długą liczbę całkowitą wewnątrz bloku try.
- Jeśli konwersja zakończy się pomyślnie, wynik zostanie zapisany w wyniku zmiennym.
- Następnie program wypisuje pomyślnie przekonwertowaną liczbę na standardowe wyjście.
- Jeden z bloków catch obsługuje wszelkie wyjątki powstałe podczas konwersji.
- Jeśli wyjątek jest typu std::invalid_argument, zostanie wypisany komunikat o błędzie informujący, że argument jest nieprawidłowy.
- Jeśli wyjątek jest typu std::out_of_range, drukowany jest komunikat o błędzie informujący, że wynik konwersji jest poza prawidłowym zakresem.
- Program zwraca do systemu operacyjnego wartość 0, co oznacza pomyślne wykonanie, a główna funkcja kończy się.
W skrócie, kod próbuje użyć std::stol() funkcja wewnątrz bloku try, aby przekonwertować ciąg „12345” na długą liczbę całkowitą. Wynik zostanie wydrukowany, jeśli konwersja zakończy się pomyślnie. Przechwytuje wyjątki i wypisuje odpowiedni komunikat o błędzie w przypadku, gdy taki się pojawi (albo z powodu nieprawidłowego argumentu, albo dlatego, że wynik jest poza zakresem).
Na koniec program zwraca 0, co oznacza pomyślne zakończenie.
piekło wywołania zwrotnego w javascript
Przykładowy program 2:
Weźmy inny przykład, aby zilustrować użycie funkcja std::stol w C++.
#include #include int main() { std::cout << 'Enter numeric strings to convert to long integers (type 'exit' to end): '; while (true) { std::string userInput; std::cout <> userInput; if (userInput == 'exit') { std::cout << 'Exiting program. Goodbye! '; break; } try { long result = std::stol(userInput); std::cout << 'Converted Value: ' << result << std::endl; } catch (const std::invalid_argument& e) { std::cerr << 'Error: Invalid argument in input '' << userInput << '': ' << e.what() << std::endl; } catch (const std::out_of_range& e) { std::cerr << 'Error: Out of range for input '' << userInput << '': ' << e.what() << std::endl; } } return 0; }
Wyjście:
Wyjaśnienie :
- W tym przykładzie użytkownik jest proszony o wprowadzenie wartości ciągu znaków do przekonwertowania.
- Aplikacja będzie akceptować dane wejściowe użytkownika, dopóki użytkownik nie wprowadzi danych 'Wyjście' za pomocą pętli while.
- Wstępowanie 'Wyjście' powoduje, że program wypisze wiadomość pożegnalną i zakończy pętlę.
- Jeśli nie, próbuje użyć std::stol aby przekonwertować dane wejściowe na long.
- Przekonwertowana wartość zostanie wydrukowana, jeśli konwersja zakończy się pomyślnie.
- Wyłapuje wyjątki (nieprawidłowe argumenty, spoza zakresu), wyświetla komunikat o błędzie i kontynuuje.
- W oczekiwaniu na dane wejściowe nowego użytkownika pętla przechodzi do następnej iteracji.