Probleme mit dem Eingabepuffer unter C++

Dieses Thema im Forum "C/C++" wurde erstellt von xtian_82, 10.10.2006.

  1. #1 xtian_82, 10.10.2006
    xtian_82

    xtian_82 Jungspund

    Dabei seit:
    13.09.2006
    Beiträge:
    11
    Zustimmungen:
    0
    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.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. x0r

    x0r Bitschubser

    Dabei seit:
    20.12.2005
    Beiträge:
    169
    Zustimmungen:
    0
    Ort:
    Berlin
    Mahlzeit,

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


    MfG
     
Thema:

Probleme mit dem Eingabepuffer unter C++

Die Seite wird geladen...

Probleme mit dem Eingabepuffer unter C++ - Ähnliche Themen

  1. grub-pc Probleme bei upgrade

    grub-pc Probleme bei upgrade: Hallo, ich habe beim dist-upgrade folgendes Problem: ---------- Nach dieser Operation werden 0 B Plattenplatz zusätzlich benutzt. Trigger für...
  2. Probleme mit YUM

    Probleme mit YUM: Hallo, ich habe CentOs 7 als Dualboot mit Windows 7 auf einen Dell Latitude E5510 installiert. Dies hat soweit auch alles geklappt. Leider habe...
  3. Forscher analysieren Durchsatzprobleme im Linux-Scheduler

    Forscher analysieren Durchsatzprobleme im Linux-Scheduler: Eine Gruppe von Forschern hat Fälle identifiziert, in denen der Scheduler im Linux-Kernel falsche Entscheidungen trifft und die CPUs nicht so gut...
  4. München: LiMux als Sündenbock für IT-Probleme?

    München: LiMux als Sündenbock für IT-Probleme?: Im Münchner Stadtrat soll später in diesem Jahr erneut über den Einsatz von Linux in der Stadtverwaltung diskutiert werden. Die Grünen vermuten,...
  5. BSI-Audit findet keine akuten Probleme in OpenSSL

    BSI-Audit findet keine akuten Probleme in OpenSSL: Das Bundesamt für Sicherheit in der Informationstechnik hat OpenSSL auf seine Sicherheit untersuchen lassen. Die Analyse zeigt vor allem, dass die...