cin Eingabe am letzten unbenutzen Ende eines Array's setzen.



  • Guten Tag,

    Ich möchte gerne in einem C++ Programm, eine Eingabe entgegen nehmen und in einem Array Speichern. Ich möchte gerne nicht das der Array immerwieder überschrieben wird, sonder erweitert wird.

    strSize = myStr[].size();
            myStr[strSize] = eingabe;
    

    strSize ist vom Datentyp. myStr ist vom Typ string.

    In PHP konnte man es einfach anfügen. So in etwa:

    <?
    $array1 = array('Eintrag 1','Eintrag 2');
    $array2 = array('Eintrag 3','Eintrag 4');
    $array1[] .= $array2;
    ?>
    

    Leider funktioniert dies wohl nicht so, unter C++.
    Wie könnte man mein Problem lösen?

    Danke
    blue



  • Benutz einfach std::vector. Mit std::vector<string> kannst Du zum Beispiel strings speichern. Einfach mit push_back anhängen, der vector wächst dann automatisch.



  • Danke für deine Antwort.

    Ich kenne den Code leider nicht genau, und ich kenne auch keine Seite, wie es das Beispielsweiße bei PHP gibt, wo man die Codes nachschauen kann. Könntest du mir eventuell ein Beispiel geben?

    Danke
    blue



  • vector<string> myStr;
    string eingabe;
    cin >> eingabe;
    myStr.push_back(eingabe);
    

    Hier noch was zu vector und co.
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html



  • Danke, es würde mir weiterhelfen, aber leider scheint vector nicht mit dem Datentyp string arbeiten zu wollen.

    29 C:\cpp\ArrayTest\ArrayTest.cpp request for member `push_back' in ` myStr', which is of non-aggregate type `std::vector<char,
    

    Mein Fehler.

    Ich weiß nicht weiter. Ich wollte lediglich einen "ArrayTest" aus 5 Zeilen machen und bekomme immer den Fehler.

    Ich zeige euch einfach mal den kompletten Quellcode; vielleicht könnt ihr so genau sagen was falsch ist?

    // Array Test Programm
    #include <iostream>
    #include <vector>
    #include <sting>
    using namespace std;
    
    // Globale Variablen
    int loop = 0;
    
    // Main Funktion
    int main()
    {
        while(loop == 0)
        {
            // 2 Zeilenumbrüche
            cout << endl << endl;
    
            // Deklarieren der Variablen
            vector<char> myStr[1023];
            string eingabe;
            char eingabe2[1023];
    
            // Aufforderung zur Eingabe
            cout << "Bitte geben Sie einen Text ein!" << endl;
            cout << "Eingabe: ";
            cin  >> eingabe;
    
            // Weiterverarbeitung der Eingabe
            eingabe += " ";
            eingabe2[0] = eingabe;
            myStr.push_back(eingabe2);
    
            // Ausgabe des Arrays
            cout << endl;
            cout << "Im Array 'eingabe' befindet sich folgender Inhalt: " << endl << myStr << endl << endl;
    
            // Abfrage, ob das Programm weiter ausgeführt werden soll
            cout << endl << "Wenn Sie das Programm beenden m\246chten, geben Sie bitte die 1 oder eine gr\246\223ere Zahl ein ein." << endl;
            cin  >> loop;
        }
    
        // "Plichtrückgabe"
        return 0;
    }
    


  • Hier ist ja einiges falsch. Schau dir meinen Minicode oben nochmal an. Da steht nichts von vector<char>.
    Wozu brauchst du noch eingabe2?
    Die Ausgabe des vector sollte auch in einer Schleife erfolgen.
    Hast du dir den Link zu den STL-Containern durchgelesen?



  • Weil heute Freitag ist mal ein veränderter Code

    int main()
    {
        while(loop == 0)
        {
            // 2 Zeilenumbrüche
            cout << endl << endl;
    
            // Deklarieren der Variablen
            vector<string> myStr; // string statt char
            string eingabe;
    //        char eingabe2[1023]; // brauchts du nicht
    
            // Aufforderung zur Eingabe
            cout << "Bitte geben Sie einen Text ein!" << endl;
            cout << "Eingabe: ";
            cin  >> eingabe;
    
            // Weiterverarbeitung der Eingabe
            eingabe += " "; // Wozu dass hier?
    //        eingabe2[0] = eingabe; //gelöscht
            myStr.push_back(eingabe); //eingabe übernehmen
    
            // Ausgabe des Arrays
            cout << endl;
            cout << "Im Array 'eingabe' befindet sich folgender Inhalt: " << endl; //hier enden da die Ausgabe vom vector in eine Schleife kommt
    //Ausgabe des vector in der Schleife bis zum Ende, sollte vielleicht aus der while-Schleife raus
            for( size_t i=0; i<myStr.size(); ++i) 
              cout << myStr[i] << endl;
            cout << endl;
    
            // Abfrage, ob das Programm weiter ausgeführt werden soll
            cout << endl << "Wenn Sie das Programm beenden m\246chten, geben Sie bitte die 1 oder eine gr\246\223ere Zahl ein ein." << endl;
            cin  >> loop;
        }
    
        // "Plichtrückgabe"
        return 0;
    }
    


  • blue. schrieb:

    // Array Test Programm
    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    
    // Globale Variablen
    int loop = 0;
    
    // Main Funktion
    int main()
    {
        while(loop == 0)
        {
            // 2 Zeilenumbrüche
            cout << endl << endl;
            
            // Deklarieren der Variablen
            vector<char> myStr[1023];
            string eingabe;
            char eingabe2[1023];
    
            // Aufforderung zur Eingabe
            cout << "Bitte geben Sie einen Text ein!" << endl;
            cout << "Eingabe: ";
            cin  >> eingabe;
    
            // Weiterverarbeitung der Eingabe
            eingabe += " ";
            eingabe2[0] = eingabe;
            myStr.push_back(eingabe2);
    
            // Ausgabe des Arrays
            cout << endl;
            cout << "Im Array 'eingabe' befindet sich folgender Inhalt: " << endl << *I << endl << endl;
            
            // Abfrage, ob das Programm weiter ausgeführt werden soll
            cout << endl << "Wenn Sie das Programm beenden m\246chten, geben Sie bitte die 1 oder eine gr\246\223ere Zahl ein ein." << endl;
            cin  >> loop;
        }
        
        // "Plichtrückgabe"
        return 0;
    }
    

    probiers mal so

    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    
    // Globale Variablen
    int loop = 0;
    
    // Main Funktion
    int main()
    {
        // Deklarieren der Variablen
        vector<string> myStr;
        string eingabe;
    
        while(loop == 0)
        {
            // 2 Zeilenumbrüche
            cout << endl << endl;
    
            // Aufforderung zur Eingabe
            cout << "Bitte geben Sie einen Text ein!" << endl;
            cout << "Eingabe: ";
            cin  >> eingabe;
    
            // Weiterverarbeitung der Eingabe
            myStr.push_back(eingabe);
    
            // Ausgabe des Arrays
            cout << endl;
            cout << "Im Array 'eingabe' befindet sich folgender Inhalt: " << endl;
            for(vector<string>::iterator I = myStr.begin(); I != myStr.end(); ++I)
                    cout << *I << endl;
            cout << endl;
    
            // Abfrage, ob das Programm weiter ausgeführt werden soll
            cout << endl << "Wenn Sie das Programm beenden m\246chten, geben Sie bitte die 1 oder eine gr\246\223ere Zahl ein ein." << endl;
            cin  >> loop;
        }
    
        // "Plichtrückgabe"
        return 0;
    }
    

Anmelden zum Antworten