<<-Operator



  • Hallo,

    ich möchte gern ein Paar Strukturen in eine Datei speichern (z.B. für ne Replayfunktion bei nem Spiel). Dann hab ich folgenden Code erstellt:

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    
    class Telefonbucheintrag
    {
    public:
    	int Nummer;
    	string Name;
    };
    
    void main()
    {
    	Telefonbucheintrag Ansgar, Anbar;
    	Ansgar.Nummer = 0;
    	Anbar.Nummer = 2;
    	Ansgar.Name = "Ansgar";
    	Anbar.Name = "Anbar";
    	string name = "C:/Test.rep";
    	ofstream dataus;
    	dataus.open(name.c_str(), ios_base::out);
    	dataus << Ansgar << Anbar;
    }
    

    Ich habe festgestellt, dass ich den << - Operator überladen muss.
    Kann mir jemand sagen wie ich das hier machen muss

    Gruß
    Dumpfie



  • hi

    vielleicht hilft dir das schon aus der faq

    http://www.c-plusplus.net/forum/viewtopic.php?t=39469

    wäre eine möglichkeit, humes beispiel mit dem struct Person als binary lesen.



  • ungefähr so:

    #include <ostream>
    
    ostream& operator<<(ostream& stream, const Telefonbucheintrag& eintrag) {
      return stream << eintrag.Name << " : " << eintrag.Nummer;
    }
    

    musst halt in der Funktion deine Sachen in den Stream schreiben wie du's haben willst, und zum Schluß den Stream wieder zurückgeben, damit man das ganze verketten kann (cout << A << B).



  • danke für die Antworten, aber ih habe noch winw Frage:

    kann man auch Klasseninstanzen oder so etwas in eine Datei spewichern, wenn nein, wie kommen dann so merkwürdige Buchstabenkombiantionen zustande, wenn man DLL oder EXe Dateien in einem Editor öffnet?

    Gruß Dumpfie



  • eine instanz einer klasse wird in der regel nur durch ihren inhalt beschrieben (du speicherst nur die sachen, die ein objekt "individuell" machen), ihre (interne) struktur muss/soll nicht mitgeschrieben werden. in DLLs und EXE-Dateien sind eben nicht Daten, sondern (Maschinen)-Code. Dazwischen sind aber oft irgendwo lesbare strings versteckt



  • achso, danke!!!


Anmelden zum Antworten