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