Streams komische Sachen

Hi,

ich bin’s wieder mal. Hab etwas komisches entdeckt, mit dem ich nichts anfangen kann. Ich denke das Problem ist nicht schwierig, aber ich sehe es einfach nicht.
Ich möchte einen ostream in eine Datei schreiben. Jedoch habe ich das Problem, wenn ich ostream.rbuf() einmal an cout geschickt habe, dann kann ich das kein zweitesmal machen?!?

Vielen Dank schon mal.
Gruß Karsten

Also hier der Code.

// write an outstream to file
bool CPaymentsIO::writeFile(const ostream& outstream,const string& strFilename){

// open file or create and erase input
ofstream out(strFilename.c_str(), ios::trunc);
// output on error
assert(out);

// write file
out

Das ist ganz klar, dass das nicht funktioniert.

Jedes File hat einen Pointer auf das aktuelle Lese-Position.
Nach dem öffnen steht er auf dem ersten Byte. Wenn du nun
Daten liest, bewegt sich der Zeiger um die anzahl der gelesen Bytes weiter. Wenn du alles liest, steht er dann ‚hinter‘ dem letzetn Byte, quasi am EOF. Jeder Versuch etwas zu lesen, schlägt fehl.

Man kann den Zeiger aber wieder zurückseten, das geht mit:
stream.tellg(ios:beg);

Für das schreiben gilt ähnliches:
stream.tellp(ios:beg);

Gruss, Marc