Console: "Weiter mit beliebiger Taste..."



  • Hallo,

    weiß einer wie man in reinem C++ ohne die C Library eine Pause erzeugen kann, die auf eine beliebige Taste wartet. Bisher hab ich das mit der C Library Funktion getch() gelöst:

    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    void pause(void);
    
    int main(void) {
    
        pause();
        return(0);
    }
    
    void pause(void) {
        cout    << "Beenden mit beliebiger Taste...";
        getch();
    }
    

    Wer weiß einen Rat?

    Gruß,
    Kostik



  • geht nicht im standard meines wissens..

    aber wenn du sowieso die conio.h benutzt, würde ich kbhit() verwenden.



  • system("PAUSE");
    


  • ich hätte es mit "cin.get" gemacht!



  • Original erstellt von gibbets2000:
    ich hätte es mit "cin.get" gemacht!

    Tja, ich habe es versucht, aber das klappt nicht richtig, undzwar wenn ich davor irgendwelche Eingaben mit Return abfrage, dann funktioniert cin.get() nicht, sprich es wird garnicht auf ein Tastendruck gewartet; Muss wohl irgendwie mit dem Streambuffer zusammenhängen, keine Ahnung...

    /*
        Autor:      Konstantin Bender
        Projekt:        Übung aus dem Buch "Workshop C++" Kapitel 2, Übung Nr. 15
        Datum:      22.05.2003
    
        Aufgabe:        Erstellung einer Funktion die prüft ob ein bestimmtes Jahr
                    Schaltjahr ist oder nicht.
     */
    
    using namespace std;
    
    void pause(void);
    bool isSchaltjahr(long jahr);
    
    int main(void) {
        long jahr;
    
        cout    << "Geben Sie ein Jahr ein: ";
        cin >> jahr;
    
        if (isSchaltjahr(jahr))
            cout    << "Das Jahr "    << jahr   << " ist ein Schaltjahr." << endl   << endl;
        else
            cout    << "Das Jahr "    << jahr   << " ist KEIN Schaltjahr."    << endl   << endl;
    
        pause();
        return(0);
    }
    
    bool isSchaltjahr(long jahr) {
        if ((jahr%4 == 0))
        {
            if (jahr%100 != 0)
            {
                return(true);
            }
            else
            {
                if (jahr%400 == 0)
                    return(true);
            }
        }
        return(false);
    }
    
    void pause(void) {
        cout    << "Beenden mit beliebiger Taste...";
        cin.get();      // FEHLER: Wartet NICHT auf einen Tastendruck.
    }
    




  • Cool, danke. Habe in C++ FAQ gesucht, aber die Konsolen-FAQ hatte ich nicht gesehen...



  • Original erstellt von <geht auch einfacher>:
    **```cpp
    system("PAUSE");

    Diues erzeugt eine Zeitliche Pause. eleganter ist:

    cout<<"Weiter mit beliebiger Taste...";
    cin.get();// Wenn es nicht läuft, dsann entweder cin.sync(); oder cin.ignore(80,10) davor setzen. Aber bei cin.ignore(80,10) kann es passieren, dass du 2mal Enter druecken musst.
    

    [ Dieser Beitrag wurde am 26.05.2003 um 10:45 Uhr von Spieleprogrammierer editiert. ]



  • Original erstellt von Spieleprogrammierer:
    system("PAUSE");**
    Diues erzeugt eine Zeitliche Pause.**

    Nö.

    **```cpp
    cout<<"Weiter mit beliebiger Taste...";
    cin.get();// Wenn es nicht läuft, dsann entweder cin.sync(); oder cin.ignore(80,10) davor setzen. Aber bei cin.ignore(80,10) kann es passieren, dass du 2mal Enter druecken musst.

    beliebig != enter


Anmelden zum Antworten