Probleme mit dem Eingabepuffer unter C++

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:
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.
 
Mahlzeit,

statt:
xtian_82 schrieb:
cin.clear();
cin.ignore(800);

probier mal:
Code:
cin.clear();
cin.sync();
das cin.ignore() kannst Du dann weglassen...


MfG
 

Ähnliche Themen

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Aufgabe in C

Problem mit Texteingabe

Shellskript - Fehler in Cron

NagiosGrapher 1.7.1 funktioniert nicht

Zurück
Oben