Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Fab

Treue Seele

  • »Fab« ist der Autor dieses Themas

Beiträge: 85

Wohnort: Iwo in der Eifel - nähe von Euskirchen

Beruf: Schüler

  • Private Nachricht senden

1

27.12.2008, 19:06

[Erledigt] Konsole schließt trotz cin.get()

Hi
dieser Code ist zwar ein Abgewandelter aus dem Buch von Heiko, aber ich habe mir gedacht, da es eher ein allgemeines Problem ist, passt es besser hier rein. ;)
Ich habe mich zwar schon früher mit C++ beschäftigt und bin defenitiv weiter als an dieser Stelle im Buch, arbeite es aber trotzdem nochmal ganz durch, da ich gemerkt habe, dass ich hier und da was schluderig bin und so arbeite ich meinen ganzen Stil nochmal neu auf und lerne noch dazu.

So jetzt erstmal nach dem ganzen Gerede mein Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
using namespace std;

int main() {
    //Variablen

    //

    int nAuswahl = 0;

    while(nAuswahl != 3) {
        cout << "\nMenue\n\n";
        cout << "(1) Spiel starten" << endl;
        cout << "(2) Einstellungen vornehmen" <<endl;
        cout << "(3) Spiel beenden" << endl;

        cout << endl;
        cout << "Ihre Eingabe: ";
        cin >> nAuswahl;

        switch(nAuswahl) {
            case (1): {
                cout << "Starte spiel ..." << endl;
                      } break;
            case (2): {
                cout << "Einstellungen vorgenommen" << endl; 
                      } break;
            case (3): {
                cout << "Spiel wird beendet" << endl;
                      } break;
            default: {
                cout << "Falsche Eingabe!" << endl;
                     }
        }
    }
    cin.get();
    return 0;
}


Wieso schließt die Konsole trotzdem.
Das verstehe ich einfach nicht.

Vielen Dank schonmal für eure Antworten - geht ja eig immer ziemlich fix.

MFG
Fab
;)
Eins hab ich erkannt - ich werde immer Schüler bleiben, ein Leben lang

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

27.12.2008, 19:35

Da wird sich noch etwas im stream befinden.
Probier einmal das hier:

C-/C++-Quelltext

1
2
3
std::cin.clear(); //fehlerstates zurück

std::cin.ignore ( std::cin.rdbuf()->in_avail() ); //alle vorhanden zeichen verwerfen

std::cin.get();//auf eingabe warten

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

3

27.12.2008, 19:44

Ich benutze immer:

C-/C++-Quelltext

1
2
cin.sync();
cin.get();


Socke

Fab

Treue Seele

  • »Fab« ist der Autor dieses Themas

Beiträge: 85

Wohnort: Iwo in der Eifel - nähe von Euskirchen

Beruf: Schüler

  • Private Nachricht senden

4

27.12.2008, 19:51

Vielen Dank

Danke.
Vielen Dank.

Beides klappt prima.
;)

Was mich aber wundert, wieso das früher immer geklappt hat.

MFG
Fab
;)
Eins hab ich erkannt - ich werde immer Schüler bleiben, ein Leben lang

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

27.12.2008, 20:00

Re: Vielen Dank

Zitat von »"Fab"«


Was mich aber wundert, wieso das früher immer geklappt hat.

MFG
Fab
;)


Weil du wahscheinlich nix im Eingabestrom hattest. ;)

6

28.12.2008, 15:38

Wird nen Newline im Stream sein ... machse nix ;)

Ob sync auch clear aufruft bin ich mir nicht ganz sicher ...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige