string aus einer struktur in stringarray schreiben



  • Ich möchte einen String in ein Arrray mit der Größe von x, wobei
    jeweils 1 Platz z.b.: array[1] mit einem wort belegt werden soll.

    string array[x]=struktur.wort;
    

    Jedoch liefert der Compiler folgende Fehlermeldung zurrück:

    error C2057: Konstanter Ausdruck erwartet
    error C2466: Zuordnung eines Arrays der konstanten Größe 0 nicht möglich.

    (x wird als 0 definiert doch im späteren Verlauf des Programms per x=x++
    auf 1 gesetzt)

    Wo könnte hier der Fehler liegen oder gibt es eine bessere Methode?



  • Vielleicht solltest du dich noch ein bisschen intensiver mit Arrays und Strings befassen.

    Grundsätzlich musst du das Array vorher erstellen (mit compilezeit-konstanter Grösse) und anschliessend die Strings einlesen. Ich empfehle sowieso STL-Container.
    Für die einzelnen Worte gibt es unterschiedliche Möglichkeiten mit der Standardbibliothek, vielleicht wäre auch das Schreiben einer eigenen Funktion keine schlechte Übung...



  • #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        string array[2]={"Hallo","du!"};
    
        cout <<array[0]<<"\n";
        cout <<array[1]<<"\n";
    
        cin.get();
    }
    

    hast du das so gemeint oder hab ich das falsch verstanden? 😃



  • Ich wollte eigentlich den Integer x anstatt der 2 verwenden.

    Also wenn ich zum bsp.: x als "3" definiere, soll das Array aus 3 strings bestehen.

    Außerdem habe ich jetzt das Problem, da ich dieses array abspeichere und dann wieder auslese. Gibt es eine Möglichkeit die strigs einzeln zuzuweisen?

    ungefähr so:

    string Text[60];
    x=1;
    Text[x]="hallo"
    x=x++;
    Text[x]="du"
    

    Trotzdem danke.



  • manfredkaush schrieb:

    Gibt es eine Möglichkeit die strigs einzeln zuzuweisen?

    Ja, z. B. eine Initialisierungsliste:

    #include <iostream>
    #include <string>
    
    int main()
    {
    	const int arr_size = 3;
    	// Elemente eines Arrays mit Initialisierungsliste initialisieren
    	std::string str_arr[arr_size] = { "test1", "test2", "test3" };
    	// Ausgabe aller Elemente des Stringarrays
    	for(int i = 0; i != arr_size; ++i)
    		std::cout << str_arr[i] << std::endl;
    
    	return 0;
    }
    

    manfredkaush schrieb:

    Ich wollte eigentlich den Integer x anstatt der 2 verwenden.

    Also wenn ich zum bsp.: x als "3" definiere, soll das Array aus 3 strings bestehen.

    Dann sollte dein Integer const sein (wie in meinem Codebeispiel) oder du weist die Arraygröße dynamisch mit new[] zu.



  • Besser, du nimmst std::vector :

    // Erstellt einen STL-Vector mit x Elementen vom Typ
    // std::string, die gerade mit "hallo" initialisiert werden.
    std::vector<std::string> Vec(x, "hallo");
    

    Wenn dir die STL nichts sagt, kannst du hier den Artikel lesen. Hier erhältst du ausserdem zusätzliche Informationen zur Funktionalität.




Anmelden zum Antworten