Eclipse Console-Output bleibt weiss



  • Servus,

    ich kann mir das gerade nicht erklären, dass da in einige Szenarien der Konsolenoutput in der Eclipse-Konsole erscheint und einige Male nicht.

    Wenn ich den s2 noch auskommentiere, dann bleibt die Konsole leer, der untere Code-Abschnitt ist in meiner main-Methode. Erstaunlich ist vor allem, dass weiter oben in der main-Methode bereits nahezu gleiche Testanweisungen stehen und da klappt es - komisch?!

    // TODO hier knallt es
    	string* s1 = new string("YLKG");
    	//string* s2 = new string("YLEG");
    	/*
    	string* s3 = new string("YLEG");
    	string* s4 = new string("FLNG");
    
    	string* c1 = new string("YYYF");
    	string* c2 = new string("LLLL");
    	string* c3 = new string("KEEN");
    	string* c4 = new string("GGGG");
    	*/
    	cout << "\n" << (*s1) << "\n"; // << "\n" << (*s2);// << (*s3) << (*s4) << (*c1) << (*c2) << (*c3) << (*c4) ;
    


  • Eclipse...

    hmm...

    Wenn das nicht mal das falsche Forum ist...

    Aber evtl. ist auch "\n" != std::endl ...

    Das zweite flusht nämlich deinen Stream....



  • Warum überhaupt den std::string mit new anlegen?
    Ein einfache Variable würde reichen...

    Simon



  • Wegen der strings habe ich halt alles mögliche probiert. Nun habe ich das so eingegrenzt, dass es 's1' anzeigt und egal was ich bis jetzt probiert habe, sobald ich 's2' auch auf die Konsole schicken will, das klappt nicht. Wie würdet ihr s2 ausgeben?

    Update: Kann ja nicht wahr sein, wenn ich statt 's2' einfach "Teststring" hinschreibe, wird es wie gewünscht ausgegeben .... ich kann mir nicht mehr erklären an was das liegen kann?!

    Update 2: Ok, ich habe den Fehler weiter eingegrenzt ... s2 wird angezeigt, wenn s1 vorher nicht deklariert wurde - das Problem scheint also zu sein, wenn ich mehr als einen 'string' in die Welt setze. Aktuell umschiffe ich das Problem dass ich erstmal C-Strings nutze. Hoffe einer sieht eine Lösung.

    // TODO hier knallt es
    	string s1("YLKG");
    	string s2("YLEG");
    	/*
    	string* s3 = new string("YLEG");
    	string* s4 = new string("FLNG");
    
    	string* c1 = new string("YYYF");
    	string* c2 = new string("LLLL");
    	string* c3 = new string("KEEN");
    	string* c4 = new string("GGGG");
    	*/
    	cout << s1 << "\n" << s2 << endl;// << s2 << endl;// << (*s3) << (*s4) << (*c1) << (*c2) << (*c3) << (*c4) ;
    	// cout << "Teststring" << endl;
    


  • Das könnte damit zusammenhängen, dass die Eclipse-Konsole keine echte tty ist und das Flush-Verhalten dementsprechend anders ist.

    Versuch's mal mit

    #include <cstdio>
    
    // ...
    
    std::setvbuf(stdout, NULL, _IONBF, 0);
    

    Das hat es jedenfalls für jemand anderen gebracht, der vor einiger Zeit im C-Forum eine vergleichbare Frage hatte.

    Tritt das Problem auf der Kommandozeile auch auf?



  • Hallo,
    Bei mir funktioniert dein Beispiel einwandfrei.
    Ich verwende Eclipse für C++ Version 1.3.1

    #include <string>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	// TODO hier knallt es
    	    string* s1 = new string("YLKG");
    	    string* s2 = new string("YLEG");
    
    	    string* s3 = new string("YLEG");
    	    string* s4 = new string("FLNG");
    
    	    string* c1 = new string("YYYF");
    	    string* c2 = new string("LLLL");
    	    string* c3 = new string("KEEN");
    	    string* c4 = new string("GGGG");
    
    	    cout << "\n" << (*s1) << "\n" << "\n" << (*s2) << (*s3) << (*s4) << (*c1) << (*c2) << (*c3) << (*c4) ;
    }
    


  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Danke - gut zu wissen, dass es wohl nicht am Code liegt.


Log in to reply