Daten eines Streams verändern

Hallo Leute,

in einem Programm von mir benutze ich ganz allgemein einen istream, aus dem ich Daten blockweise mit read herausziehe.
Jetzt würde ich das ganze gerne so erweitern, dass ich die Daten verändern kann, indem ich verschiedene Streams zwischenschalte, z.B. nach n Bytes eine Checksumme einfügen, Bytesequenzen nach bestimmten Mustern filtern, oder was auch immer.

Dazu hatte ich mir zwei Szenarien ausgedacht:

  1. Ich erbe von iostream und verändere die Daten beim Einlesen vom „vorherigen“ Stream.
  2. Ich schreibe Klassen, die nur >> überladen und setze in meinem Programm ganz ans Ende der Streamkette eine Wrapperklasse, die mit >> ließt und Funktionen fürs Blockweise lesen bereitstellt.

Was davon ist denn die elegantere Lösung, bzw. funktioniert das beides so, wie ich es mir gedacht habe?
Gibt es evtl. noch andere Möglichkeiten?

Gruß Zorki