Vektor in ein String umschreiben?



  • Grüßt euch,

    ich wollte einen Vektor der dynamisch mit new zur Laufzeit belegt ist in ein String umwandeln. Ich bekomme immer wieder die folgenden

    Compilation failed due to following error(s): main.cpp:34:19: error: cannot convert ‘std::vector’ to ‘int’ i
    
    #include <iostream>
    #include <sstream>
    #include <vector>
    #include <ctime>
    using namespace std;
    
    
    
    void init(std::vector<int> *a, vector<int> *b, int n){
    
    for (int i=0; i<n; i++) // Array durchlaufen
    {
       int zufallszahl= rand()%6;
    
      a->push_back(zufallszahl);
      b->push_back(zufallszahl);
    
    
    
    
    
    }
    
    }
    
    
    
    string toString(std::vector<int> *a, int n){
            int str[n];
            string S;
          S = "";
          
        for (int i = 0; i < n; i++){
            str[i]=a[i];
        }
           for(int i = 0; i < n; i++){
            S = S + to_string( str[i] );
           }
          
         cout<<S<<endl;  
        return S;
    }
    
    
    
    
    int main(){
        int n;
        
         std::vector<int> *a = new std::vector<int>(); 
         std::vector<int> *b = new std::vector<int>();
         
       cout<< "Wie gross soll das Datenfeld werden? " << endl;
        cin>> n;
    
    
        
    
          init(a,b,n);
          toString(a,n);
    }
    

    Hat jemand eine Idee? Komm irgendwie nicht weiter.... Ich kenne mich leider nicht sogut mit Vektoren aus, deswegen finde ich für mein Problem auch keine wirkliche Lösung.

    Lg



  • Laß den Blödsinn mit dem Zeiger und new.
    std::vector<int> a reicht völlig aus.

    Und als Parameter für die Funktionen nimmst du dann eine Referenz (&):

    void init (std::vector<int>& a, std::vector<int>& b, int n)
    {
      // ...
      a.push_back(zufallszahl); // <- Memberzugriff mittels Punktoperator
      b.push_back(zufallszahl); // <- dito
    }
    

    Dann erübrigt sich auch der Fehler in der toString-Funktion bei Zugriff mittels a[i].

    Dein weiterer Fehler ist, daß du das in Standard-C++ nicht erlaubte dynamische angelegte Array int str[n]; verwendest.
    Das brauchst du auch gar nicht, denn du kannst ja direkt auf a[i] zugreifen.



  • @Th69

    Danke. Ich hatte mir schon irgendwie gedacht, dass es daran liegt. Ich hatte das mit call by referenz bis jetzt immer noch bei arrays probiert, wusste nicht, dass es auch bei Vektoren so funktioniert. Ich habe das to string iexakt wie bei einem array probiert, ich werde das jetzt mal so versuchen wie du das gemacht hast.


Log in to reply