eigener streambuffer



  • Hallo Leute!

    ich will einen eigenen streambuffer schreiben.

    Dieser soll nicht flushen - dh alles im speicher halten und erst bei einem expliziten flush oder dem dtor aufruf den inhalt ausgeben.

    das problem ist, dass ich mich mit den iostreams ziemlich schlecht auskenne.

    reicht es, wenn ich von std::basic_streambuf (oder wie die basisklasse auch immer heißen mag) zu erben und overflow() zu überschreiben, oder muss ich von grundauf einen neuen streambuf schreiben?

    gibts dazu auch gute links?



  • Im Trivialfall leitet man von 'streambuf' (bzw dem ausgerollten Typ) ab, und hat noch zusätzlich einen 'streambuf*' als Member, der den 'richtigen Stream' repräsentiert. Beim expliziten flush wird IIRC die Methode 'sync' aufgerufen, die idR die Daten einfach an den Memberstream weiterdirigiert.

    Gute Links kenne ich leider nicht. Ein Kapitel im Stroustrup schreibt was drüber und Beispiele findet man sicherlich im Internet. Und mehr möchte ich nicht sagen, weil das mit den iostreams bei mir immer zu einem Rumgerate ausartet :).



  • Gute Links kenne ich leider nicht.

    Na da kann ich ausnahmsweise mal helfen: http://www.langer.camelot.de/IOStreams/Excerpt/excerpt.htm
    http://www.langer.camelot.de/Articles/IOStreamsDerivation/IOStreams-Derivation.html
    http://www.langer.camelot.de/Papers/IOStreams/IOStreams.htm

    Besonders die ersten beiden sind sehr hilfreich, wenn es um streambufs geht.

    Ansonsten such mal in comp.lang.c++.moderated (oder comp.lang.c++) nach Beiträgen von Dietmar Kühl. Da geht es fast immer um iostreams und fast immer gilt, lesen, ausdrucken, abheften 🙂

    [ Dieser Beitrag wurde am 03.05.2003 um 00:28 Uhr von HumeSikkins editiert. ]


Anmelden zum Antworten