Ich habe ein kleines Problem in meiner C++-Konsolenanwendung. Ich habe schon vieles probiert aber es funzt nix. Ich habe das Programm vereinfacht um das Problem einzuschränken.
Problem: Ich will ein Programm per Schleife wiederholen. Der User muss dafür "int a" auf 1 setzen.
C++:
#include <iostream.h> void main(void) { int a=0; char d[20];
do{ cout<<"d: "; cin.getline(d,20); //Beim ersten ausführen kann man d hier eingeben, danach wird die Eingabe übersprungen.
cout<<"\na: "; cin>>a; //Diese Eingabe funzt bei jedem Durchgang der Schleife }while(a==1); }
Die Ausgabe (Wenn man bei "int a" immer 1 eingibt):
Wenn Du die 1 eingibst, gibst Du in Wirklichkeit ja Zweizeichen ein: Nämlich die 1 und danach ein ENTER. Das ENTER verweilt im Stream, wird somit nicht von "cin>>a" gelesen. Das getline sieht da ENTER im Stream und denkt es ist fertig. Daher wird es immer wieder übersprungen. Mach mal hinter dem "cin>>a" ein "cin.ignore();" und berichte von Deinen Erfahrungen. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)
Danke das funktioniert. Ich wußte dies auch (mit der übergebenen Eingabe) aber ich hatte danach gegoogelt und ich bekam immer nur cin.sync(); cin.clear(); - und die haben mein Problem nicht gelösst.
Ich werde mir cin. wohl nochmal genauer anschauen müssen.