Speicherung von mehreren Variablen in einem "Überbegriff"



  • Hey Leute!

    Ich habe mir heute gedacht ich schreibe mal aus Spaß und zum üben ein kleines Konsolenprogramm, mit dem man Schularbeiten Vergleichen kann (klassenweise). Das Programm läuft auch schon, doch nun stehe ich an. Denn wenn ich mit ofstream bzw. ifstream arbeite, dann kann ich immer nur eine Schularbeit pro Datei speichern. Nun meine Frage, wie kann man in einer Datei immer mehrere Variablen unter einem Überbegriff speichern, das heißt so ähnlich wie mit Strukturen. Ich stelle mir das so vor, dass man dann sagt output.write und dann einen überbegriff wie SA1, SA2, SA3 usw und dann zu jeweiliger SA die werte nacheinander geöffnet werden.

    Naja, ich hoffe ihr könnt mir trotz meiner umständlichen Beschreibung folgen und hoffe auf Antworten!

    MFG
    FERNman

    PS: Die Datei: http://www.file-upload.net/download-8308221/Schularbeiten---berarbeitungs-programm.zip.html
    Hoffe das funktioniert, ich habe das vorher noch nie gemacht



  • Na denk' dir einfach ein Format aus mit dem das geht. Oder such dir ein Bestehendes aus.

    Eine sehr einfache Sache sind z.B. CSV Files (Comma Separated Values). Also pro Schularbeit eine Zeile, und die einzelnen Werte mit Trennzeichen getrennt (muss kein Komma sein, üblich sind auch ";" oder Tabulatoren).

    CSV Files lassen sich auch wunderbar in anderen Programmen verwenden. z.B. Excel kann die importieren, auch so-gut-wie jedes Datenbank-Frontend, sogar die Serienbrieffunktion von Word kommt damit klar.

    Vorteile: sehr einfach umzusetzen, sehr breiter Support, ...
    Nachteile: wenig flexibel, kein Support für NULL Werte, nicht sehr übersichtlich zu lesen, z.T. Unterschiede wie Strings gehandhabt werden die selbst das Trennzeichen enthalten, ...

    Davon abgesehen gibt es natürlich noch haufenweise andere Formate, die andere Vor- und Nachteile haben. z.B. XML, JSON, YAML, ...

    Und natürlich kannst du auch eine Datenbank verwenden.



  • Danke für deine Antwort, damit kann ich schonmal ein bisschen was anfangen.
    Ich habe aber nun noch eine Frage, da ich das etwas komisch finde:

    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main()
    {
    	int Hallo, Dumm;
    	Hallo = 1, Dumm = 3;
    
    	ofstream Output("Hallo.csv", ios::binary);
    	Output.write((char*)&Hallo, sizeof(Hallo), &Dumm, sizeof(Dumm);
    }
    

    Wieso funktioniert das Beispielprogramm nicht? Und kannst du mir ein funktionierendes Beispiel schicken, damit ich sehe wie es funktioniert!

    Danke
    MFG
    FERNman



  • FERNman schrieb:

    Wieso funktioniert das Beispielprogramm nicht?

    Weil es falsch ist. Lern C++. Lern Referenzdoku Lesen.

    Und kannst du mir ein funktionierendes Beispiel schicken, damit ich sehe wie es funktioniert!

    Lol.
    Kannst du mir €1000 schicken, damit ich sehe dass du kein Troll bist!



  • FERNman schrieb:

    ofstream Output("Hallo.csv", ios::binary);
    	Output.write((char*)&Hallo, sizeof(Hallo), &Dumm, sizeof(Dumm);
    }
    

    Wieso funktioniert das Beispielprogramm nicht?

    Du musst Dich bei Funktions/Methodenaufrufen schon an die Definition (Stichwort: Parameter) halten:
    http://www.cplusplus.com/reference/ostream/ostream/write/



  • Ok, danke, hab es hinbekommen 🙂

    MFG
    FERNman


Anmelden zum Antworten