[QT] QTextStream(stdout) hält sich net and std::cout.rdbuf(...)?
-
Hi, ich wunder mich gerade tierisch wieso in folgendem Mini Progrämmchen der Textstream nicht ebenso in die LogFile schreibt. Ich habe den stdcout umgebogen (was für std::cout << auch einwandfrei funktioniert.) Allerdings spuckt der Textstream sein Zeug immer noch auf der Console aus.
Weiss jemand woran das liegt und ob es nen Weg gibt das zu erreichen.
#include <QtCore/QCoreApplication> #include <QTextStream> #include <fstream> #include <iostream> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); std::fstream logfile("LogFile.log", std::ios::out); std::cout.rdbuf(logfile.rdbuf()); QTextStream out(stdout); out << "Das landet auf der Konsole! Warum?" << endl; std::cout << "Das landet im LogFile, so soll es sein!" << std::endl; logfile.close(); return a.exec(); }
Viele Grüße
Grey
P.S: Mir is natürlich klar dass ich den Textstream direkt in ne File leiten könnte, allerdings wusste ich ganz gerne wieso sich der Textstream nicht an den rdbuf hält.
-
Weil du mit
std::cout.rdbuf(logfile.rdbuf());
std::cout umleitest, aber nicht stdout! stdout geht immer noch auf die Konsole. Du musst also stdout dazu bringen ins Logfile zu schreiben.
-
Danke, ich sitz eben dran. Mir war nicht bewusst das std::cout und stdout unterschiedliche dinge sind.
freopen scheint wohl der richtige Weg sein. (Wenn die File nicht schon offen wäre). Mal sehn ob ich es irgendwie hinbekomme stdout to stdcout umzubiegen.
Allerdings wäre es wahrscheinlich geschickter wenn ich den textstream dazu bringen könnte std::cout zu nutzen.