cout gibt in Datei aus (stdout.txt) und nicht auf die Kommandozeile



  • Hallo!

    Seit neustem habe ich ein seltsames Problem:
    Alles was ich mit Hilfe von cout, printf und sonstwie ausgebe, landet nicht auf der Kommandozeile sondern in der Datei stdout.txt. (Im selben Verzeichnis wie die Programmdatei) Am Quellcode habe ich nichts geändert, allerdings verwende ich eine neuere Version von SDL und mingw
    Spezielle Compileroptionen habe ich nicht aktiviert, auser -pedantic und -Wall.

    IDE ist Code::Blocks mit mingw, derzeit unter Windows. (Warte noch auf Kubuntu 7.10)

    Ich habe ehrlich gesagt keine Ahnung wieso ich meine Ausgabe nicht normal zu sehen bekomme. ^^ 😞
    Weiß das vielleicht jemand?

    lg, bloodycross

    PS: Ich benutze cout vor allem zum ausgeben von Debugginginformationen (FPS, Status der Funktionen, usw.)
    Kann mir jemand zufällig ein gutes Design für eine eigene Debug-Klasse empfehlen die: beliebig Variablen und Text annimmt und den Inhalt ausgibt und die zusätzlich erlaubt diesen zu klassiefizieren. (Wichigkeit: INFORMATION, LOW, ERROR, usw). So sollte man dann bestimmen können was man ausgegeben bekommen will. [Mein bisheriges Problem: Die verschieden Typen]



  • SDL leitet standardmäßig die Ausgabe in die Dateien stdout und stderr um. Das wurde vorallem deshalb gemacht, weil bei Anwendungen mit "Fenstern" die Konsole normalerweise nicht angezeigt wird und die Ausgabe damit auch nicht zu sehen sein würde.
    Ich weiß nicht ob SDL das mag, aber theoretisch müsstest du die Ausgabe eigentlich wieder auf stdout umleiten können.



  • wenn das von SDL so umgeleitet wird sollte man das eigentlich auch wieder abstellen können. Also mal bei SDL schlau machen



  • Wusste ich gar nicht ^^

    Früher (Vor neuaufsetzen meines PCs) wurde nämlich noch alles normal ausgegeben (also in stdout).

    Naja, werde ich mal schauen müssen.

    Erstmal vielen Dank!

    lg, bloodycross

    Edit: Hab's gefunden:
    Einfach

    freopen( "CON", "w", stdout );
    freopen( "CON", "w", stderr );
    

    einfügen und es wird wieder normal ausgegeben! 🙂 (zumindest unter Windows, Linux konnte ich noch nicht testen)


Anmelden zum Antworten