Extrahieren Sie ganze Zahlen aus einer Zeichenfolge und speichern Sie sie mit C++ in einem Vektor

Extrahieren Sie ganze Zahlen aus einer Zeichenfolge und speichern Sie sie mit C++ in einem Vektor

Lesezeit:10 Minuten | Codierzeit:5 Minuten

Einführung


In diesem Artikel lernen wir, wie man ganze Zahlen aus einem String extrahiert und sie mit C++ in einem Vektor speichert.

Lassen Sie uns zuerst Vektoren und Strings definieren. Vektoren sind robustere Versionen von Arrays und im Vergleich zu Arrays weniger fehleranfällig. Im Gegensatz zu Arrays, bei denen es statisch ist und deren Größe vorher deklariert werden muss, sind Vektoren dynamisch und können sich selbst in der Größe ändern. Der Vorteil der Verwendung von Vektoren besteht darin, dass sie Platz für Wachstum zuweisen können, aus diesem Grund verbrauchen sie jedoch auch mehr Speicher als die Verwendung von Arrays. Strings sind eindimensionale Arrays, die Folgen von Zeichen wie Ganzzahlen und Buchstaben darstellen.

Schauen wir uns nun ein Beispielproblem an:

   Input: String = "There are 5 dogs and 3 cats."
   Output: 5 3

   Input: String = " OpenGenus 11 22 234 test"
   Output: 11 22 234

Um die Ganzzahlen aus dem String zu extrahieren, verwenden wir stringstream . Stringstream ist eine Stream-Klasse in C++, mit der Sie mit Strings arbeiten können. Mit Stringstream können Sie ein String-Objekt lesen, extrahieren oder in ein String-Objekt einfügen. Wir übergeben den String an einen Stringstream und mit einer Schleife können wir jedes Wort untersuchen und prüfen, ob es sich um eine Ganzzahl handelt. Wenn eine ganze Zahl erkannt wird, wird sie an einen Vektor angehängt. Die Schleife wird fortgesetzt, bis sie das Ende der Zeichenfolge erreicht.

Algorithmus


  1. Übergeben Sie den String an Stringstream
  2. Gehen Sie in einer Schleife jedes Wort durch
  3. Überprüfen Sie, ob das Wort eine ganze Zahl ist oder nicht
  4. Werte im Vektor speichern

Komplexität

  • Worst-Case-Zeitkomplexität:Θ(N)
  • Durchschnittliche Fallzeitkomplexität:Θ(N)
  • Zeitkomplexität im günstigsten Fall:Θ(1)

Implementierungen

   
    #include <iostream>
    #include <sstream>
    #include <vector>
    using namespace std;

    int main()
    {
        stringstream ss;
        string str = " OpenGenus 11 22 234 test";

        // store the string to string stream
        ss << str;

        //declare vector 
        vector< int > intValues;

        string temp;
        int number;
        while (!ss.eof()) {

            //for getting each word in the string
            ss >> temp;

            // check for integers
            if (stringstream(temp) >> number){
                // if it is an integer value will be pushed to the vector
                intValues.push_back(number); 
            }

        }
        // print values inside the vector
         for (int i=0; i<intValues.size(); i++){
            cout<<intValues[i] << " ";
         }
        return 0;
    }
    



Ausgabe:

Anwendungen

  • Kann verwendet werden, um ganzzahlige Werte aus der Zeichenfolgeneingabe von Benutzern zu erhalten.
  • Vektoren können verwendet werden, wenn die Größe der zu speichernden Werte unbekannt ist.

Frage 1

Welchen Befehl verwenden Sie, um Werte an einen Vektor anzuhängen?
front() push_back() pop_back() Assign() Die push_back() Funktion wird verwendet, um Elemente von hinten in einen Vektor zu schieben.

Frage 2

Sind Vektoren statisch oder dynamisch?
Statisch Hängt von der Implementierung ab Beide dynamischen Vektoren sind dynamisch und können sich selbst in der Größe ändern.

Mit diesem Artikel bei OpenGenus müssen Sie die vollständige Vorstellung davon haben, wie man Integer aus Strings extrahiert und mit C++ in Vektoren speichert.