X
xtian_82
Jungspund
Hallo, habe irgendwie Probleme mit dem Eingabepuffer unter C++. Will nach jeder Eingabeabfrage den Eingabepuffer vollständig leeren, dass der nicht in einer nachfolgenden Abfrage landet, allerdings klappt das nicht so recht. Hab das mit cin.clear() bzw. cin.ignore() probiert, allerdings geht das alles nicht so richtig.
Hier folgendes Beispielprogramm:
Weiß jemand wie man damit sauber umgeht? Da finde ich das unter plain c mit scanf und fgets einfacher.
Hier folgendes Beispielprogramm:
Code:
#include <iostream>
#include "coord.cpp"
using namespace std;
int main() {
int x, y, z;
char c;
axis a;
bool ungueltig = false;
Coordinate koord;
cout << "Geben Sie die gewünschten Koordinaten ein:" << endl;
while (!(cin >> x >> y >> z)) {
cout << "ungültige Eingabe; nochmal!" << endl;
cin.clear();
cin.ignore(800);
}
cin.clear();
cin.ignore(800);
koord.set(x,y,z);
cout << endl << "Die Koordinaten wurden auf " << koord.get(X) << ", " << koord.get(Y) << ", " << koord.get(Z) << " gesetzt." << endl;
cout << "Welche Achse wollen sie abfragen? (x/y/z) " << endl;
do {
if (cin >> c) {
ungueltig = false;
switch(c) {
case 'x' : a = X; break;
case 'y' : a = Y; break;
case 'z' : a = Z; break;
default : ungueltig = true; break;
}
}
else ungueltig = true;
if (ungueltig) {
cout << c << " ist ungültige Eingabe; nochmal!" << endl;
}
cin.clear();
cin.ignore(800);
} while ( ungueltig );
cout << "Der Wert von " << c << " ist " << koord.get(a) << "." << endl;
return 0;
}
Weiß jemand wie man damit sauber umgeht? Da finde ich das unter plain c mit scanf und fgets einfacher.