logo

std::stol-Funktion in C++

In diesem Artikel erfahren Sie mehr über die Funktion std::stol in C++ mit ihrer Syntax und Beispielen.

Was ist std::stol()?

Der Standardvorlagenbibliothek (STL) in C++ beinhaltet die std::stol() Funktion, die speziell für die Konvertierung entwickelt wurde Strings in lange Ganzzahlen umwandeln . Diese Funktion ist besonders hilfreich, wenn Sie mit Benutzereingaben arbeiten oder Daten aus externen Quellen lesen, bei denen die Eingabe normalerweise im String-Format erfolgt. Es gibt die entsprechende lange Ganzzahl zurück, nachdem eine Zeichenfolge als Eingabe empfangen wurde. Eine Ausnahme vom Typ std::invalid_argument oder std::out_of_range wird ausgelöst, wenn die Konvertierung nicht möglich ist oder wenn die Eingabezeichenfolge Zeichen enthält, die nicht Teil einer gültigen Zahl sind.

Syntax:

Es hat die folgende Syntax:

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

str: Der Text, der in eine lange Ganzzahl geändert werden muss.

Pos.: Der Index des ersten nicht konvertierten Zeichens der Zeichenfolge, gespeichert als Zeiger auf ein size_t-Objekt. Wenn dies nicht erforderlich ist, kann dieser optionale Parameter auf nullptr gesetzt werden.

Base: Die numerische Basis der Konvertierung. Zehn ist die Standardeinstellung.

Rückgabewert: Der numerische Wert, der aus der Eingabezeichenfolge analysiert wurde, wird von der Funktion als lange Ganzzahl zurückgegeben.

Ausnahmen: Die Funktion löst eine Ausnahme aus, wenn die Konvertierung nicht abgeschlossen werden kann oder wenn Zeichen in der Eingabezeichenfolge ungültig sind. Wenn keine Konvertierung durchgeführt werden konnte, gibt es mögliche Ausnahmen std::invalid_argument Und std::out_of_range wenn der konvertierte Wert für eine lange Zeit größer als der darstellbare Bereich ist.

Anwendungsfälle:

    Eingabeverarbeitung durch Nutzer:

std::stol() ist nützlich, um numerische Eingaben, die von Benutzern im Zeichenfolgenformat empfangen werden, in einen numerischen Typ umzuwandeln, damit sie weiterverarbeitet werden können.

    Eingabe-/Ausgabedatei:

Lesen numerischer Daten in Dateien, die Zeichenfolgen als Datendarstellung enthalten.

    Datenvalidierung:

Bei der Datenvalidierung geht es darum, durch Validierung und Verifizierung zu bestätigen, dass Benutzereingaben lange Zahlen korrekt darstellen.

Beispielprogramm 1:

Nehmen wir ein Beispiel, um die Verwendung von zu veranschaulichen std::stol-Funktion 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; } 

Ausgabe:

std::stol-Funktion in C++

Erläuterung:

    Initialisierung:
    • Eine String-Variable namens numStr wird zu Beginn des Programms mit dem Wert „12345“ initialisiert.
    Versuchen Sie es mit Blockieren:
    • Der Code wird in einen Try-Block verschoben und signalisiert, dass er versuchen wird, die darin enthaltenen Anweisungen auszuführen. Auf mögliche Ausnahmen wird hier eingegangen.
    Konvertierungsversuch:
    • Das Programm versucht zu verwenden std::stol() um die Zeichenfolge numStr in eine lange Ganzzahl innerhalb des Try-Blocks umzuwandeln.
    Effektive Konvertierung:
    • Das Ergebnis bleibt bei erfolgreicher Konvertierung in der Variablen result erhalten.
    Konvertierter Ausgabewert:
    • Die erfolgreich konvertierte Zahl wird dann vom Programm auf der Standardausgabe ausgegeben.
    Ausnahmen behandeln:
    • Einer der Catch-Blöcke behandelt alle Ausnahmen, die während der Konvertierung auftreten.
    Ausnahme für das Abfangen ungültiger Argumente:
    • Wenn die Ausnahme vom Typ std::invalid_argument ist, wird eine Fehlermeldung ausgegeben, die besagt, dass das Argument ungültig ist.
    Ausnahme für Fänge außerhalb der Reichweite:
    • Wenn die Ausnahme vom Typ std::out_of_range ist, wird eine Fehlermeldung ausgegeben, die besagt, dass das Konvertierungsergebnis außerhalb des gültigen Bereichs liegt.
    Rückgaberecht:
    • Das Programm gibt 0 an das Betriebssystem zurück, was die erfolgreiche Ausführung anzeigt, und die Hauptfunktion wird beendet.

Kurz gesagt, der Code versucht, das zu verwenden std::stol() Funktion innerhalb eines Try-Blocks, um die Zeichenfolge „12345“ in eine lange Ganzzahl umzuwandeln. Bei erfolgreicher Konvertierung wird das Ergebnis ausgedruckt. Es erfasst Ausnahmen und gibt die entsprechende Fehlermeldung aus, falls eine solche auftritt (entweder aufgrund eines falschen Arguments oder weil das Ergebnis außerhalb des Bereichs liegt).

Schließlich gibt das Programm 0 zurück, was einen erfolgreichen Abschluss bedeutet.

Beispielprogramm 2:

Nehmen wir ein weiteres Beispiel, um die Verwendung von zu veranschaulichen std::stol-Funktion 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; } 

Ausgabe:

std::stol-Funktion in C++

Erläuterung :

  • In diesem Beispiel wird der Benutzer aufgefordert, zu konvertierende Zeichenfolgenwerte einzugeben.
  • Die Anwendung akzeptiert weiterhin Benutzereingaben, bis der Benutzer Eingaben macht 'Ausfahrt' mit einer while-Schleife.
  • Std::cin wird innerhalb der Schleife verwendet, um Benutzereingaben zu lesen.
  • Eintreten 'Ausfahrt' bewirkt, dass dieses Programm eine Abschiedsnachricht ausgibt und die Schleife beendet.
  • Wenn nicht, wird versucht, es zu verwenden std::stol um die Eingabe in eine lange umzuwandeln.
  • Der konvertierte Wert wird gedruckt, wenn die Konvertierung erfolgreich ist.
  • Es fängt Ausnahmen ab (ungültige Argumente, außerhalb des gültigen Bereichs), gibt eine Fehlermeldung aus und fährt fort.
  • Während auf neue Benutzereingaben gewartet wird, fährt die Schleife mit der nächsten Iteration fort.