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

niratschi

Frischling

  • »niratschi« ist der Autor dieses Themas

Beiträge: 34

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

1

25.03.2011, 17:53

cin.get erzeugt Endlosschleife

Hi,
ich bearbeite gerade Das Buch "C++ für Spieleprogrammierer" und habe ein kleines Programm geschrieben, in welchem ich die Funktion cin.get verwende:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.
.
.
char player1[30]="Player1";
char player2[30]="Player2";
.
.
.
case 'c':
case 'C':
{
  cout<<"Name of first player: ";
  cin.get (player1, 29);

  cin.ignore();

  cout<<"Name of second player: ";
  cin.get (player2, 29);
}break;


Die anderen Verzweigungen von Switch funktionieren tadellos, aber diese erzeugt eine Endlosschleife in der Konsole.
Funktioniert cin.get nicht in einer switch-case Bedingung?

Christian
++++++[>+++++++++++>+++++++<<-]>+.>+..

2

25.03.2011, 18:00

setz nach dem cin.get() nochmal ein break.
Metal ist keine Musik sondern eine Religion.

niratschi

Frischling

  • »niratschi« ist der Autor dieses Themas

Beiträge: 34

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

3

25.03.2011, 18:05

mmh, habe ich gerade ausprobiert, geht aber trotzdem nicht...

Ich habe mal ausprobiert, den Codeteil in einem eigenen Programm laufen zu lassen, außerhalb der switch-case-Bedingung, da funktioniert es ohne Probleme. Es muss also irgendwie im Zusammenhang mit dem case stehen...
++++++[>+++++++++++>+++++++<<-]>+.>+..

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

4

25.03.2011, 18:10

Wahrscheinlich hängt sich das Programm aufgrund einer ungültigen Eingabe auf.
Schrebe cin.ignore(); direkt vor beide cin.get()

niratschi

Frischling

  • »niratschi« ist der Autor dieses Themas

Beiträge: 34

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

5

25.03.2011, 18:22

Danke, jetzt funktioniert es...
Kann es sein, dass das "normale" cin den Lesezeiger auch verwendet, so dass man ihn mit cin.ignore() zurücksetzen muss?
Ich habe nämlich vorher cin.get nicht verwendet, und trotzdem verlangt er cin.ignore(), damit es funktioniert.
++++++[>+++++++++++>+++++++<<-]>+.>+..

Werbeanzeige