operator << für ostream und für ofstream



  • Hi,
    könnte mir jemand dafür einen Rat geben ?

    Darf ich den operator<< (oder soll ich) überladen ?
    Es sind fast gleiche Argumente (ist das ein Fehler) ?

    Am Bildschirm ist die Ausgabe korrekt aber in der Datei nicht.
    Statt 02.01.2009 schreibt er 20.10.2009 und nachfolgender setw(14)
    funktioniert nicht.

    ostream &operator<<(ostream &ostr, const CDatum &dat)
    {
    	ostr << setw(2) << setfill('0') << dat.Tag << "."
    		 << setw(2) << setfill('0') << dat.Monat << "."
    		 << setw(4) << dat.Jahr << setfill(' ');
    	return ostr;
    
    }
    
    ofstream &operator<<(ofstream &ofstr, const CDatum &dat)
    {
    	ofstr << setw(2) << dat.Tag << "."
    		 << setw(2)  << dat.Monat << "."
    		 << setw(4)  << dat.Jahr;
    	return ofstr;
    
    }
    

    Danke schön



  • Du darfst ihn zwar überladen, allerdings wirds dir nicht allzuviel bringen. Für alle anderen ist op<< nämlich nur für ostream überladen, so dass du bei der aneinanderrehung von op<< nur vorne eine ofstresm-Referenz hast und hinten nur einen ostream:

    ofstream fout("bla.txt");
    CDatum datum;
    int i;
    
    fout << datum; //ok, ofstream-ausgabe
    fout << i      //<- gibt einen ostream zurück
         << datum; //<- ostream-ausgabe (nicht ofstream)
    


  • Danke pumuckl,

    dies hat mir geholfen.
    vladimir


Anmelden zum Antworten