Estrai i numeri interi dalla stringa e archiviali nel vettore usando C++

Estrai i numeri interi dalla stringa e archiviali nel vettore usando C++

Tempo di lettura:10 minuti | Tempo di codifica:5 minuti

Introduzione


In questo articolo impareremo come estrarre interi da una stringa e memorizzarla in un vettore usando C++.

Per prima cosa definiamo vettori e stringhe. I vettori sono versioni più robuste degli array e meno soggetti a errori rispetto agli array. A differenza degli array in cui è statico e la loro dimensione deve essere dichiarata in anticipo, i vettori sono dinamici e possono ridimensionarsi da soli. Il vantaggio dell'utilizzo dei vettori è che può allocare spazio per la crescita, tuttavia, per questo motivo consumano anche più memoria rispetto all'utilizzo degli array. Le stringhe sono matrici unidimensionali che rappresentano sequenze di caratteri come numeri interi e lettere.

Ora esaminiamo un problema di esempio:

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

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

Per estrarre gli interi dalla stringa useremo stringstream . Stringstream è una classe di flusso in C++ che consente di operare sulle stringhe. Stringstream ti consente di leggere, estrarre o inserire in un oggetto stringa. Passeremo la stringa a uno stringstream e usando un ciclo possiamo esaminare ogni parola e verificare se è un numero intero. Se viene rilevato un numero intero, verrà aggiunto a un vettore. Il ciclo continuerà fino al raggiungimento della fine della stringa.

Algoritmo


  1. Passa la stringa a stringstream
  2. In un ciclo, esamina ogni parola
  3. Controlla se la parola è un numero intero o meno
  4. Memorizza i valori nel vettore

Complessità

  • Complessità temporale del caso peggiore:Θ(N)
  • Complessità temporale media del caso:Θ(N)
  • Complessità temporale nel migliore dei casi:Θ(1)

Implementazioni

   
    #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;
    }
    



Produzione:

Applicazioni

  • Può essere utilizzato per ottenere valori interi dalla stringa immessa dagli utenti.
  • I vettori possono essere utilizzati quando la dimensione dei valori da memorizzare è sconosciuta.

Domanda 1

Quale comando usi per aggiungere valori in un vettore.
front() push_back() pop_back() assign() push_back() è usata per inserire elementi in un vettore dal retro.

Domanda 2

I vettori sono statici o dinamici?
Statico Dipende dalle implementazioni Entrambi i vettori dinamici sono dinamici e possono ridimensionarsi.

Con questo articolo su OpenGenus, devi avere un'idea completa di come estrarre interi da una stringa e archiviarli in un vettore usando C++.