logo

std::stol-functie in C++

In dit artikel leer je over de std::stol-functie in C++ met zijn syntaxis en voorbeelden.

Wat is std::stol()?

De Standaardsjabloonbibliotheek (STL) in C++ omvat de std::stol() functie, die speciaal is gemaakt voor het converteren tekenreeksen naar lange gehele getallen . Deze functie is vooral handig bij het werken met gebruikersinvoer of het lezen van gegevens uit externe bronnen, waarbij de invoer meestal in tekenreeksformaat wordt gegeven. Het retourneert het equivalente lange gehele getal na ontvangst van een string als invoer. Er wordt een uitzondering van het type std::invalid_argument of std::out_of_range gegenereerd als de conversie niet mogelijk is of als de invoertekenreeks tekens bevat die geen deel uitmaken van een geldig getal.

Syntaxis:

Het heeft de volgende syntaxis:

lange std::stol(const std::string& str, size_t* pos = 0, int basis = 10);

str: De tekst die moet worden gewijzigd in een lang geheel getal.

terwijl lus Java

Positie: De index van het eerste niet-geconverteerde teken van de tekenreeks, opgeslagen als verwijzing naar een size_t-object. Als dit niet vereist is, kan deze optionele parameter worden ingesteld op nullptr.

baseren: De numerieke basis van de conversie. Tien is de standaardwaarde.

algebra van verzamelingen

Winstwaarde: De numerieke waarde die uit de invoertekenreeks is geparseerd, wordt door de functie geretourneerd als een lang geheel getal.

Uitzonderingen: De functie genereert een uitzondering als de conversie niet kan worden voltooid of als tekens in de invoertekenreeks ongeldig zijn. Als er geen conversie mogelijk is, zijn er mogelijke uitzonderingen std::ongeldig_argument En std::buiten_bereik als de geconverteerde waarde gedurende langere tijd groter is dan het representatieve bereik.

Gebruiksscenario's:

    Invoerverwerking door gebruikers:

std::stol() is handig voor het transformeren van numerieke invoer die van gebruikers wordt ontvangen in tekenreeksformaat naar een numeriek type, zodat deze verder kan worden verwerkt.

    Invoer-/uitvoerbestand:

Numerieke gegevens lezen in bestanden die tekenreeksen bevatten als representatie van de gegevens.

    Gegevensvalidatie:

Gegevensvalidatie houdt in dat wordt bevestigd dat gebruikersinvoer lange getallen nauwkeurig weergeeft, door deze te valideren en te verifiëren.

Voorbeeldprogramma 1:

Laten we een voorbeeld nemen om het gebruik van te illustreren std::stol-functie in 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; } 

Uitgang:

std::stol-functie in C++

Uitleg:

    Initialisatie:
    • Een stringvariabele genaamd numStr wordt aan het begin van het programma geïnitialiseerd met de waarde '12345'.
    Probeer Blok:
    • De code gaat naar een try-blok, wat aangeeft dat het zal proberen de daarin opgenomen instructies uit te voeren. Mogelijke uitzonderingen worden hier behandeld.
    Conversiepoging:
    • Het programma probeert te gebruiken std::stol() om de string numStr om te zetten in een lang geheel getal binnen het try-blok.
    Effectieve conversie:
    • De uitkomst wordt bewaard in het variabele resultaat als de conversie succesvol is.
    Uitvoer geconverteerde waarde:
    • Het succesvol geconverteerde getal wordt vervolgens door het programma afgedrukt naar de standaarduitvoer.
    Uitzonderingen behandelen:
    • Een van de catch-blokken handelt eventuele uitzonderingen af ​​die tijdens de conversie optreden.
    Uitzondering voor het opvangen van ongeldige argumenten:
    • Er wordt een foutmelding weergegeven waarin staat dat het argument ongeldig is als de uitzondering van het type std::invalid_argument is.
    Uitzondering voor vangen buiten bereik:
    • Er wordt een foutmelding weergegeven waarin staat dat het conversieresultaat buiten het geldige bereik valt als de uitzondering van het type std::out_of_range is.
    TERUGSTUURBELEID:
    • Het programma retourneert 0 naar het besturingssysteem, wat een succesvolle uitvoering aangeeft, en de hoofdfunctie eindigt.

Kortom, de code probeert het std::stol() functie binnen een try-blok om de string '12345' naar een lang geheel getal te converteren. Het resultaat wordt afgedrukt als de conversie succesvol is. Het vangt uitzonderingen op en drukt de relevante foutmelding af als deze zich voordoet (hetzij vanwege een onjuist argument, hetzij omdat het resultaat buiten het bereik ligt).

kmp-algoritme

Ten slotte retourneert het programma 0, wat een succesvolle voltooiing betekent.

Voorbeeldprogramma 2:

Laten we nog een voorbeeld nemen om het gebruik van te illustreren std::stol-functie in 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; } 

Uitgang:

std::stol-functie in C++

Uitleg :

  • In dit voorbeeld wordt de gebruiker gevraagd tekenreekswaarden in te voeren die moeten worden geconverteerd.
  • De applicatie blijft gebruikersinvoer accepteren totdat de gebruiker invoert 'Uitgang' met behulp van een while-lus.
  • Std::cin wordt binnen de lus gebruikt om gebruikersinvoer te lezen.
  • Binnenkomen 'Uitgang' zorgt ervoor dat dit programma een afscheidsbericht afdrukt en de lus beëindigt.
  • Zo niet, dan probeert het te gebruiken std::stol om de invoer naar een long te converteren.
  • De geconverteerde waarde wordt afgedrukt als de conversie succesvol is.
  • Het onderschept uitzonderingen (ongeldige argumenten, buiten bereik), drukt een foutmelding af en gaat verder.
  • Terwijl er wordt gewacht op nieuwe gebruikersinvoer, gaat de lus door naar de volgende iteratie.