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:

    ➡ istream Klasse
    ➡ ios::ignore ()
    ➡ ios::clear ()



  • 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?


Anmelden zum Antworten