Stream anzeigen UND speichern im Sinne eines Logs
-
Hallo! Tschuldigung für meine Anfängerfrage...
Wie kann ich in einer C++ Konsolenanwendung einen Stream (cout) auf dem Bildschirm ausgeben und gleichzeitig in eine Log-Datei schreiben lassen? Alle Beispiele die ich gefunden habe können immer nur eins von beiden.#include <iostream> #include <fstream> using namespace std; int main () { streambuf *psbuf; ofstream filestr; filestr.open ("test.txt"); psbuf = filestr.rdbuf(); cout.rdbuf(psbuf); cout << "This is written to the file"; filestr.close(); return 0; }
Dieser Code macht eigentlich alles was ich will außer dass cout nicht mehr angezeigt wird sondern nur in die Datei schreibt. Dabei ist es mit egal ob in die Log-Datei in Echtzeit oder erst am Schluss des Programms geschrieben wird.
Danke schon mal im Voraus!
nap
-
Hallo
mach doch eine Funktion, an die du Strings übergibst und die diese sowohl in einen FileStream (als Referenz mitübergeben) alsa auch an cout übergibt.
bis bald
akari
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Danke für die Antwort!
Ich habs mal probiert so zu lösen:
#include <iostream.h> #include <fstream.h> #include <string> using namespace std; void out(string output); ofstream outfile; int main ( int argc, char * * argv ) { outfile.open ("test.txt"); out("test\n"); outfile.close(); return 0; } void out(string output) { outfile << output; cout << output; }
Das Problem ist aber dass es bei der Ausgabe vor allen Dingen um Zahlenwerte geht (long, float, int). Wie kann ich die an out übergeben? out("test " + 2 + " bla"); geht nicht. itoa geht in dem zusammenhang auch schlecht. gibts da keine elegante Lösung? cout gibt aus UND schreibt in Datei oder sowas?
-
Hallo
ich dachte da an so was
template<typename valuetype> void out(valuetype value, ofstream &logfile) { logfile << value; cout << value; } ... ofstream outfile; outfile.open ("test.txt"); out("test\n", outfile); out(10, outfile); outfile.close(); ...
Hier ist es abzuschätzen, ob man den Logfile-Stream global macht oder als Parameter übergibt.
bis bald
akari
-
klappt wunderbar! vielen dank!
jetz hab ich auch mal templates kennengelernt...