streams komische Sachen

Von: , Frage gestellt am Mi, 16. Mai 2001

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 << outstream.rdbuf();

//hier kommt nix raus!
cout << outstream.rdbuf()<<"drei"<<endl;

if(out)
return true;
return false;
}

1 Antworten zu dieser Frage

  1. Antwort von nach einem Tag 0 hilfreich
    Re: streams komische Sachen

    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

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!