eigene streamklasse mit std::streambuf entwerfen



  • morgaehn leute

    ich hab vor, mit ne eigene streamklasse zu basteln. leider hab ich ueberhaupt keinen plan wo ich anfangen bzw. wie ich das anstellen soll. in nem forum hab ich von einem gelesen, der eine art dateisystem mit einer eigenen streamklasse realisiert hat. der leitete von std::streambuf ab.
    ich hab mir dir klasse mal so oberflaechlich angeguckt, aber irgendwie blick ich da nicht durch, was die genau macht.
    hat jemand von euch sowas schon mal gemacht ?
    wie sollte man sowas angehen ?

    cermy

    Meep Meep



  • Hallo,
    das ist letztlich nicht schwer. Du musst nur entscheiden, ob dein Stream ein Eingabe- oder Ausgabestrom sein soll (oder beides), ob er gepuffert sein muss, und ob er random-access-Zugriff erlauben soll. Im einfachsten Fall musst du nur streambuf::overflow (bzw. underflow/uflow) überscbreiben und fertig.

    Links:
    http://www.langer.camelot.de/IOStreams/Excerpt/excerpt.htm
    http://ript.net/~spec/streams/

    Alternativ kannst du dir auch die boost::iostream-Lib anschauen. Die macht das Ganze noch einfacher.

    http://www.kangaroologic.com/iostreams/libs/iostreams/doc/?path=3



  • halloechen

    hab mir die seiten und noch weiter angeguckt, aber irgendwie komme ich nicht so recht weiter. und das geld fuer das buch hab ich derzeit leider auch nicht.

    ich erklaer mal kurz, was ich da genau machen will.

    ne streamklasse, in die ich daten schreiben und aus der ich daten lesen kann. mit den shift-operatoren.
    das ganze zum teil mit binaerdaten. hab da sowas in der art wie ne userverwaltung. nun moechte ich mit z.b.

    mystream << userlist[i];
    

    daten in den stream schreiben. dies sollte nun binaer sein. die verwaltung ist an sich fuer ne GUI-anwendung. ich hab aber auch ein consolenfenster fuer debugging.
    wenn ich die basis fuer den stream dann mal geschafft haben sollte, moechte ich ihn dann so erweitern, das ich ihn in ein normales consolenfenster ausgeben kann (daten sollen dann natuerlich nicht mehr binaer ausgegeben werden), oder in eine datei (binaer) oder in z.b. ein memo (wieder textbasierend). damit das dann so einfach wie moeglich gestaltet werden kann, moechte ich bei z.b. ner outputfunktion einfach nur das streamobject uebergeben und das erledigt dann die arbeit austomatisch. also ausgabe in console, guifenster oder datei.
    ich hoff das ich mich da mal halbwegs verstaendlich ausgedrueckt habe, was ich da machen will.

    dank wuch scho mal fuer die eventuell kommende hilfe oder anregung

    Meep Meep


Log in to reply