Anfängerproblem: Fenster schliesst vor Ausgabe



  • Hallo,

    schreib am Ende deines Codes einfach:

    getch ();
    

    Dazu musst du die <conio.h> inkludieren.

    #include<iostream> 
    #include <conio.h>
    
    using namespace std; 
    
        int main() 
        { 
          int zahl1; 
          int zahl2; 
    
          cout<<"Bitte eine Zahl eingeben\n"; 
          cin>>zahl1; 
          cout<<"Bitte noch eine Zahl eingeben\n"; 
          cin>>zahl2; 
          cout<<"Zahl 2: "<<zahl2<<endl; 
          cout<<"Zahl 1: "<<zahl1<<endl; 
          getch ();
        }
    


  • Hmm, es könnte auch sein, daß in_avial() nicht das richtige Ergebnis liefert - versuch's mal mit:

    cin.clear()
    cin.ignore(numeric_limits<streamsize>::max());
    cin.get();
    

    (und gib mal testweise aus, was für einen Wert cin.rdbuf()->in_avial() überhaupt zurückgibt)



  • Moin,

    Also dein Problem ist mir gut bekannt. Jedoch habe ich von deinen möglichkeiten
    das schließen des Fenster zu verhindern noch nichts gehört.
    Wenn du getch(); Anfügst liest du das nächste Zeichen aus, das der Anwender eingibt. Du solltest cin.ignore(); eingeben (vor dem Aufruf von Return 0).

    Gib cin.ignore() ohne Par5ameter ein - das ist der eleganteste weg!

    Viel Spaß

    Jonson



  • ich glaube du kannst es auch mit system("PAUSE"); vor return 0; verhindern ...

    z.B.:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    //blabla
    
    system("PAUSE");
    return 0;
    }
    

    Hoffe das hilft 🙂

    PS: arbeitest du mit devcpp ?

    mfg. kEi

    *edit* ups, da hab ich wohl was überlesen, steht ja schon weiter oben ... sorry 😞



  • also ich würde getchar() und/oder fflush(stdin) nehmen..bö 🙂

    lg



  • CStoll schrieb:

    Hmm, es könnte auch sein, daß in_avial() nicht das richtige Ergebnis liefert - versuch's mal mit:

    cin.clear()
    cin.ignore(numeric_limits<streamsize>::max());
    cin.get();
    

    (und gib mal testweise aus, was für einen Wert cin.rdbuf()->in_avial() überhaupt zurückgibt)

    ich glaube es bringt einem anfänger garnichts etwas zu kopieren wenn er es nicht versteht, sry CStoll ist halt nur eine kritik die irgendwie alle machen, wieso nicht einfach:

    getchar(); // wartet auf eine eingabe



  • Stelfer schrieb:

    ich glaube es bringt einem anfänger garnichts etwas zu kopieren wenn er es nicht versteht, sry CStoll ist halt nur eine kritik die irgendwie alle machen, wieso nicht einfach:

    Und ihn mit Nicht-Standard-Funktionen zu bombardieren ist deiner Meinung nach besser?



  • warum ist es den kein standard ?

    ist doch einfach eine eingabe ohne übergabe,
    wenn es keiner ist dann nehme ich die kritik gerne zurück und entschuldige mich bei dir 🙂



  • OK, getchar() ist Standard - Ansi C Standard. In C++ nimmt man anstelle davon cin.get().
    (nicht standardisiert sind einige der anderen Methoden, die hier genannt wurden - z.B. fflush(stdin) oder system("pause"))



  • aso ich dachte du meintest getchar() als nicht stadardisiert ...,
    da geb ich dir recht lieber

    cin.clear()
    cin.ignore(numeric_limits<streamsize>::max());
    cin.get();

    benutzen als das system ...


Anmelden zum Antworten