logo

std::stol funkcja w C++

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:

    Przetwarzanie danych wejściowych przez użytkowników:

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ć.

    Plik wejściowy/wyjściowy:

Odczyt danych liczbowych z plików zawierających ciągi znaków jako reprezentację danych.

    Walidacji 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
std::stol funkcja w C++

Wyjaśnienie:

    Inicjalizacja:
    • Zmienna łańcuchowa o nazwie liczbaStr jest inicjowany wartością „12345” na początku programu.
    Spróbuj zablokować:
    • Kod przechodzi do bloku try, sygnalizując, że spróbuje uruchomić zawarte w nim instrukcje. W tym miejscu omówiono potencjalne wyjątki.
    Próba konwersji:
    • Program próbuje użyć std::stol() aby przekształcić ciąg numStr w długą liczbę całkowitą wewnątrz bloku try.
    Efektywna konwersja:
    • Jeśli konwersja zakończy się pomyślnie, wynik zostanie zapisany w wyniku zmiennym.
    Wyjściowa przeliczona wartość:
    • Następnie program wypisuje pomyślnie przekonwertowaną liczbę na standardowe wyjście.
    Traktowanie wyjątków:
    • Jeden z bloków catch obsługuje wszelkie wyjątki powstałe podczas konwersji.
    Wyjątek dotyczący przechwytywania nieprawidłowego argumentu:
    • Jeśli wyjątek jest typu std::invalid_argument, zostanie wypisany komunikat o błędzie informujący, że argument jest nieprawidłowy.
    Wyjątek w przypadku złapania poza zasięgiem:
    • 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.
    Polityka zwrotów:
    • 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:

std::stol funkcja w C++

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.
  • Std::cin jest używany wewnątrz pętli do odczytywania danych wejściowych użytkownika.
  • 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.