C++ stdout-Weiche
-
Hallo,
ich möchte gern in C++ eine stdout Weiche schreiben. Wenn mein Programm ohne Parameter aufgerufen wird, soll alles auf std::cout geschrieben werden. Bei einem Parameter, soll der Parameter der Dateiname sein, in die alles geschrieben werden soll.
Nur weiß ich nicht, wie das am besten geht. Ich muss irgendwie ostream entweder nach cout oder in eine Datei umleiten...
std::ostream &ostr; if(argc == 2) { ostr = std::cout; } else { ostr.open(argv[2]); }Kann wer helfen?
-
du musst den buffer von cout ersetzen:
streambuf* bufferSaver=NULL; if(argc == 2) { filebuf* buffer=new filebuf;//datei buffer erstellen buffer->open(argv[2]);//datei öffnen bufferSaver=cout.rdbuf(buffer);//buffer von cout ersetzen, alten buffer sichern(wichtig) } //hier kannst du dann cout ganz normal nutzen. //am Ende, oder immer dann, wenn du wieder in die console ausgeben willst if(bufferSaver!=NULL) { bufferSaver=cout.rdbuf(bufferSaver);//wieder zurücktauschen delete bufferSaver;//datei buffer wieder löschen }dieser sichern und umtauschen ist wichtig, damit auch der ursprüngliche buffer von cout wieder ordnungsgemäß gelöscht werden kann.