Konsole "vergisst" redirect?!?
-
Hallo!
Ich habe folgendes Problem beim Umlenken von cout. Und zwar will ich je nachdem, ob ein bestimmtes Flag gesetzt ist die Ausgabe umlenken. In diesem kleinen Beispiel ist das Flag TRUE, damit ihr seht was ich meine.
Wenn ich den Code laufen lasse, dann steht am Ende nur "Zeile1" in der Datei. Die andere Zeile wurde wohl irgendwo ins Nirvana geschrieben (auch nicht auf die "sichtbare" Konsole. Das ganze funktionniert problemlos, wenn ich das Umlenken nicht in der if{}-Schleife mache. Aber genau das ist es ja, was ich will (und auch brauche).
int main(int argc, char* argv[]) { streambuf* temp; if(true) { ofstream datei("test.txt"); temp = cout.rdbuf(); cout.rdbuf(datei.rdbuf()); cout << "Zeile1"; } cout << "Zeile2"; cout.rdbuf(temp); return 1; }
Wie berichtige ich meinen Code, damit alles, was nach der If-Schleife auf cout geschrieben wird in der Datei landet und nicht...irgendwo...
Grüße
-
Am Ende des if()-Blockes wird die Datei geschlossen - und dabei wird auch der zugehörige Buffer wieder freigegeben. Das heißt also, du mußt die Datei so lange offen halten wie du etwas dort reinschreiben willst:
int main(int argc, char* argv[]) { streambuf* temp; ofstream datei; if(true) { datei.open("test.txt"); temp = cout.rdbuf(); cout.rdbuf(datei.rdbuf()); cout << "Zeile1"; } cout << "Zeile2"; cout.rdbuf(temp); return 1; }