Hallo!
Ich hab ein merkwürdiges Problem und kann mir nicht erklären woran es liegt. Folgendes simples Progamm:
Mein Problem ist nun wenn ich es mit g++ kompiliere und starte reagiert die Eingabe ganz komisch. Wenn ich exemplarisch den Wert 'a' eingebe wird die Schleife nicht einmal durchgegangen wie erwartet, sondern es wird sofort ein zweites Mal mit einem Leerwert durchgegangen (siehe Anhang). Die Schleife geht also immer einmal mehr als gewollt mit irgendwelchen Werten durch als würde noch etwas im istream hängen. Wenn ich dieses Programm unter Visual Studios starte funktioniert alles wie gewollt. Ich würde allerdings gerne mit Netbeans und dem g++ Compiler entwickeln und hoffe daher das mir jemand dieses Verhalten erklären kann und mich aufklärt was ich falsch mache
Ich danke im Voraus!
lg
Ich hab ein merkwürdiges Problem und kann mir nicht erklären woran es liegt. Folgendes simples Progamm:
Code:
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int menu();
int main()
{
int test = 0;
while(test != 'B')
{
test = menu();
}
return 0;
}
int menu()
{
static char menuStr[] =
"\n\n B = Beenden des Programms"
"\n\n Ihre Wahl: ";
cout << menuStr;
char wahl;
cin.sync(); cin.clear(); // Nur neue Eingabe
if( !cin.get(wahl))
wahl = 'B';
else
wahl = toupper(wahl);
cin.sync(); // Eingabepuffer löschen
return wahl;
}
Mein Problem ist nun wenn ich es mit g++ kompiliere und starte reagiert die Eingabe ganz komisch. Wenn ich exemplarisch den Wert 'a' eingebe wird die Schleife nicht einmal durchgegangen wie erwartet, sondern es wird sofort ein zweites Mal mit einem Leerwert durchgegangen (siehe Anhang). Die Schleife geht also immer einmal mehr als gewollt mit irgendwelchen Werten durch als würde noch etwas im istream hängen. Wenn ich dieses Programm unter Visual Studios starte funktioniert alles wie gewollt. Ich würde allerdings gerne mit Netbeans und dem g++ Compiler entwickeln und hoffe daher das mir jemand dieses Verhalten erklären kann und mich aufklärt was ich falsch mache

lg