Liste komplett in Datei schreiben



  • Hallo,

    gibt es die Möglichkeit eine Liste komplett mit einem Befehl in eine Datei zu schrieben und auch wieder zu laden?
    Zur zeit mache ich das noch so umstänlich mit einer for-Schleife, solange Elemente in der Liste sind.

    So hab ich es zur Zeit:

    ofstream datei_schreiben("buecher.lis");
    	for (i = listInt.begin(); i != listInt.end(); ++i) 
    	{
    	datei_schreiben << (*i).getTitel().c_str() << endl;
    		datei_schreiben << (*i).getAutor().c_str() << endl;
    		datei_schreiben << (*i).getErsch_Jahr().c_str() << endl;
    		datei_schreiben << (*i).getVerlag().c_str() << endl;
    		datei_schreiben << (*i).getKategorie().c_str() << endl;	
    		datei_schreiben << (*i).getIsbn().c_str() << endl;
    		datei_schreiben << (*i).getKaufpreis().c_str() << endl;
    		datei_schreiben << (*i).getEntleiher().c_str() << endl;
    		datei_schreiben << (*i).getEntleih_datum().c_str() << endl;
    		datei_schreiben << (*i).getBeschreibung().c_str() << endl;
    	}
    	datei_schreiben.close();
    

    Und so hätte ich es gerne, wenn möglich:

    ofstream datei_schreiben("buecher.lis");
    	datei_schreiben << listInt;
    	datei_schreiben.close();
    

    Kann mir da jemand helfen?
    Wäre für Hilfe sehr dankbar





  • Danke für den Link, habs mir mal durchgelesen udn es versucht, aber es klappt nicht.

    Vielleicht liegt es daran, das in meiner Liste keine Strings sind sondern eine Klasse.

    Hat noch jemand eine andere Möglichkeit oder einen Tipp?



  • du köntest für deine klasse den << operator
    überladen, dann kannst du deine klasse speichern
    wie ein string. analog dazu den >> operator
    um die klasse wieder aus der datei zu lesen.

    gruß elwida



  • Und wie überlade ich den Operator?



  • ostream & operator << (ostream & os, DeinTyp const & foo)
    {
       os 
          << foo.getTitel() << '\n'
          << foo.getAutor() << '\n'
          << ... ;
    
       return os;
    }
    


  • Also in der Klasse:

    friend ostream& operator<<(ostream &ostr, const Typ &t)
    {
      return ostr << Typ.blabla << Typ.blablub;
    }
    

    EDIT: Zu spät...

    Code-Hacker


Anmelden zum Antworten