Article View: de.comp.lang.c++
Article #1575Re: IOSTREAM.H
From: Jochen Diener
Date: Mon, 19 Feb 1996 00:00
Date: Mon, 19 Feb 1996 00:00
50 lines
3062 bytes
3062 bytes
kuehl@uzwil.informatik.uni-konstanz.de schrieb in der Mail vom 16.02.96
zum Thema "Re: IOSTREAM.H":
> : cout ist ein Objekt der Klasse ostream_withassign, und wird waehrend der
> ^^^^^^^^^^^^^^^^^^
> Diese Klasse gibt es nach dem DWP nicht mehr. Wenn man einen Stream
> umleiten will, dann muss man, mit einer Standard konformen
> Implementation von IOstreams 'rdbuf()' verwenden:
>
> void f(ostream &rep)
> {
> cout.rdbuf(rep.rdbuf());
> }
Du hast natuerlich recht, aber eigentlich wollte ich nur mal schnell
noch ein Beispiel in die Tastatur hacken, das zum Probieren animieren
sollte.
> : Vielleicht baut ihr am besten im Kurs ein Arrayklasse die ihr ueber euren
> : eigenen stream ausgebt, dann kannst du es.
> Da die Implementation einer (guten, sicheren) Arrayklasse weit entfernt
^^^^^^^^^^^^^^^^^
> von einfach ist, wuerde ich davon abraten, eine Arrayklasse in einem
> C++-Kurs zu implementieren. Ausserdem braucht man fuer eine sinnvolle
> Arrayklasse einige "advanced C++ features" wie 'raw-memory' anlegen,
> 'placement new' und explizite Destruktoraufrufe.
Natuerlich soll er keine kommerzielle Version schreiben und dann
Klassenbibliotheken wie der LEDA Konkurrenz machen oder gar eine
portable Garbage Collection implementieren.
Aber eine einfache Implementierung macht IMHO viele Probleme klar die bei
einer kommerziellen Implementierung auftreten und koennen so im
Kurs mit einem hoffentlich kompetenten Kursleiter diskutiert werden,
anstatt alleine zu Hause mit ein paar Buechern zu kapitulieren...
> ... ist nicht portabel: Es gibt fuer 'ofstream()' nach DWP keinen
> Konstruktor, der einen 'int' als Argument bekommt. Und 'myIn' soll
> vermutlich ein Objekt der Klasse 'ifstream' sein... Aber auch das ist
> unportable, funktioniert aber wenigstens mit einigen Libraries.
Abgesehen davon, dass es nur ein schnell getipptes Beispiel war sollte
man sich darueber im klaren sein, dass nicht immer alle Compiler alle
Features und Bibliotheksfunktionen implementiert haben, geschweige denn,
dass sie so funktionieren wie sie sollten. Aus diesem Grunde ist man
auch oft gezwungen mit zusaetzlichen Layern zu arbeiten und manchmal
Dinge zu implementieren die evtl. sogar auf nur einem Compiler laufen.
Trotzdem ist dein Hinweis natuerlich angebracht.
Bis dann
Jochen
--
Mail: j.diener@hit.handshake.de
Technical Details
Message-ID:
<638ZYty86JB@hit028.hit.handshake.de>Path:
arc1-ca.pugleaf.net!hit.sb.sub.de!j.dienerReferences:
<62mRM9kpa8B@gumption.ruhr.de> <62tXlkEd6JB@hit028.hit.handshake.de> <3124cfa0.0@news.uni-konstanz.de>Show Full Headers
Complete Article Headers
X-Mailer: CrossPoint v3.1 R/A12197 Message-ID: <638ZYty86JB@hit028.hit.handshake.de> X-Gateway: ZCONNECT UR hit.sb.sub.de [DUUCP BETA vom 16.01.1996] References: <62mRM9kpa8B@gumption.ruhr.de> <62tXlkEd6JB@hit028.hit.handshake.de> <3124cfa0.0@news.uni-konstanz.de> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit From: j.diener@hit.handshake.de (Jochen Diener) Subject: Re: IOSTREAM.H Date: 19 Feb 1996 00:00:00 +0000 Path: arc1-ca.pugleaf.net!hit.sb.sub.de!j.diener Newsgroups: de.comp.lang.c++ Distribution: world