Standard Ausgabekanäle std::cout



  • Hi

    Worauf sind die Standard Ausgabekanäle ( cout und cerr )
    definiert, wenn ich eine Win32 Fenster-Anwendung hab im VC++2005EE?



  • Wie "worauf"? Die CRT verwendet intern immer die WinAPI; also WriteFile
    Siehe auch "GetStdHandle"



  • Nun, die Stadard Ausgabe Kanäle kann man doch umleiten. Bei ner Konsolen Anwendung is es ja die Konsole selbst. Nun hab ich ne Win32 APllication im Fenster, will aber zum Debuggen einfach Text ausgeben mit "cout <<" weil ich die Klasse aus ner Konsolenanwendung übernehm.
    Da gabs doch mal, dass 2 Text Files erzeugt wurden stdout und stderr, und da drin stand dann alles. ausserdem lief am Anfang die Konsole im Hintergrund und ich find grad die Einstellung nicht mehr..



  • Für Debug-Ausgaben gibt es die Funktion OutputDebugString. Die Ausgabe landet dann direkt im Debug-Window Deiner IDE.

    Für den hässlichen Weg über die Console erstellst Du zunächst eine solche per AllocConsole. Danach kannst Du stdout per freopen umleiten:

    AllocConsole();
    freopen("CONOUT$", "w", stdout);
    


  • Gästchen schrieb:

    Für Debug-Ausgaben gibt es die Funktion OutputDebugString. Die Ausgabe landet dann direkt im Debug-Window Deiner IDE.

    Für den hässlichen Weg über die Console erstellst Du zunächst eine solche per AllocConsole. Danach kannst Du stdout per freopen umleiten:

    AllocConsole();
    freopen("CONOUT$", "w", stdout);
    

    Danke, das ist genau perfekt, mit der Ausgabe im Debug-Window. 👍
    Den hässlichen Weg wär ich nur ungern gegangen.



  • Anbei noch eine kleine Ergänzung für den Fall, daß Deine Anwendung mal nicht unter dem Debugger läuft: Du kannst die Ausgaben von OutputDebugString auch mit DebugView von SysInternals einfangen.


Anmelden zum Antworten