Klasseninhalt in Datei speichern



  • Hi Leute...

    Wie kann ich einen Klasseninhalt in einer Datei speichern?

    Mit dem Struct mach ichs ja so:

    #pragma argsused
    struct Arbeiter
    {
    char name[20];
    char vorname[20];
    int alter;
    };
    
    int main(int argc, char* argv[])
    {
    fstream Arbeitsdatei("c:\\Arbeitsdatei.txt",ios::out|ios::binary);
    Arbeiter* A1 = new Arbeiter;
    cin>>A1->name;
    cin>>A1->vorname;
    cin>>A1->alter;
    
    Arbeitsdatei.write((char*)&A1,sizeof(A1));
    Arbeitsdatei.close();
    
    Arbeitsdatei.open("c:\\Arbeitsdatei.txt",ios::in|ios::binary);
    
    while(!Arbeitsdatei.eof())
     {
     Arbeitsdatei.read((char*)&A1,sizeof(A1));
     cout<<A1->name<<" "<<A1->vorname<<" "<<A1->alter<<endl;
     }
    Arbeitsdatei.close();
    
    getch();
    
            return 0;
    }
    

    PS: ja ich weiß kein Conio und getch()....



  • Mit Klassen geht das prinzipiell genauso, wenn du nix "höheres" wie vererbung... benutzt. Dann mustt du die member einzeln abspeichern und lesen (is aber Aufgabe der Klasse)...



  • hm...also nahc dem prinzip bekomm ich nur mist rraus, kannst mir mal ein GANZ EINFACHES Beispiel geben?



  • Warum schreibst du fuer die Klasse keine Serialisierungsfunktion, wenn du sie schreiben / lesen willst aus einer Datei?



  • Eine_Frage schrieb:

    hm...also nahc dem prinzip bekomm ich nur mist rraus, kannst mir mal ein GANZ EINFACHES Beispiel geben?

    [cpp]
    #pragma argsused
    class Arbeiter
    {
    public:
    char name[20];
    char vorname[20];
    int alter;
    };

    int main(int argc, char* argv[])
    {
    fstream Arbeitsdatei("c:\\Arbeitsdatei.txt",ios::out|ios::binary);
    Arbeiter* A1 = new Arbeiter;
    cin>>A1->name;
    cin>>A1->vorname;
    cin>>A1->alter;

    Arbeitsdatei.write((char*)&A1,sizeof(A1));
    Arbeitsdatei.close();

    Arbeitsdatei.open("c:\\Arbeitsdatei.txt",ios::in|ios::binary);

    while(!Arbeitsdatei.eof())
    {
    Arbeitsdatei.read((char*)&A1,sizeof(A1));
    cout<<A1->name<<" "<<A1->vorname<<" "<<A1->alter<<endl;
    }
    Arbeitsdatei.close();

    getch();

    return 0;
    }[/cpp]



  • hm...so hab ich das eigentlich auch probiert....nur kam dann mist raus beim auslesen der datei!

    Muss ich morgen nochmal schauen!

    Danke erstmal!


Anmelden zum Antworten