eigenen Stream erstellen
-
Hallo,
ich würde gerne ein Objekt haben, welches ich wie einen Streambuffer benutzen kann, also mit << Text und Variabel-inhalte an das Objekt schicken. Nur will ich dann in dem Objekt entscheiden ob ich diesen Buffer nur auf der Konsole ausgeben, in ein File schreiben oder einfach nur zwischenspeichern will, um es später mal an ein GUI-Textfeld zu senden.
Wie gehe ich da am besten ran? Ich bin leider mit der ganzen Streamvererbungsherachie etwas überfordert und für jede Hilfe oder Codeschnipsel dankbar.
-
Dafür sind streambuffer nicht gemacht. Entscheiden wohin geschrieben wird macht man so:
stringstream << objekt; //zum zwischenspeichern ostream << objekt; //in eine Datei cout << objekt; //als AusgabeDu siehst, nicht das Objekt entscheidet wo es hingeschrieben wird, sondern Anwendungscode. Wenn du dynamisch entscheiden möchtest wohin deine Daten gehen sollen lege ein ostream *mytarget an, dass du entsprechend auf cout, Dateien oder Stringstreams setzt und immer benutzt. Mit einem Wrapper könnte man dann auch je nach Objekt entscheiden wo es hin soll.
-
Du kannst auch einen allgemeinen ostream nehmen und dessen Streambuf dann dynamisch auf das gewünschte Ziel setzen. Sei es, indem du mehrere Streambufs benutzt und jeweils den passenden aktivierst; oder indem du einen Streambuf programmierst, der deine gewünschten Ziele unterstützt und entsprechende Methoden anbietet, um die Ziele zu wählen.