was bedeutet cin.clear() und cin.ignore()???
-
ja meine frage wurde schon im titel beschrieben, ich wollte ma fragen ob mir einer erklären kann was diese funktionen amchen?? und wo man sie am meißten anwenden muss.
-
Servus,
cin ist ein Objekt der Klasse istream, deshalb beziehe ich mich im Folgendem auf istream. clear () ist eine Methode dieser Klasse, und löscht alle zuvor gesetzten Errorbits. Ein Beispiel:
unsigned int eingabe; cin >> eingabe; if (cin.fail ()) // Wenn z.B. ein Buchstabe anstatt eine Zahl eingegeben wird... { cout << "Fehler beim Einlesen!"; cin.clear (); // Errorbit wieder löschen, um bei einer evtl. neuen Abfrage // keine falschen Ergebnisse anzuzeigen. }
Mit ignore () können einfach gesagt eingegebene Zeichen ignoriert, und somit nicht in den Input Stream abgespeichert werden. Beispiel (Quelle: C++ Reference)
// istream ignore #include <iostream> using namespace std; int main () { char first, last; cout << "Enter your first and last names: "; first=cin.get(); cin.ignore(256,' '); last=cin.get(); cout << "Your initials are " << first << last; return 0; }
Diese Referenz hilft dir weiter:
-
ok alles klar das war sehr hilfreich
-
Firefighter schrieb:
ok alles klar das war sehr hilfreich
zu dem cin.fail() genügt aber auch nur
int i = 0; cin >> i; if(!cin) //wenn i == char,etc.. dann { //.... } else { //Wenn integer dann //... :) }
Es kann aber auch sein,dass .fail() noch was zusätzliches macht.
XP^
-
so Danke was sher hilfreich nun hab ich das problem das wenn die eingabe stimmt also sagen wa 20 ist muss ich nocheine zahl eingeben damit er weiter macht?