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