Pufferleerung nach CIN-Eingabe



  • Hallo,

    habe folgendes "Problem", wenn ich eine CIN-Eingabe gemacht habe und
    anschließend eine CIN.GETLINE-Eingabe folgt, springt er über diese CIN.GETLINE-Eingabe drüber.

    Momentan löse ich dieses "Problem" in dem ich zwischen der CIN-Eingabe und der CIN.GETLINE-Eingabe eine Pufferleerung (CIN.GETLINE) vornehme:

    BEISPIEL:

    void eingabe (satz &adresse)
    {
    int z=0;
    char bildschirmpuffer[20];

    cout<<"Wieviele Adresseingaben wollen Sie vornehmen: "<<flush;
    cin>>z;

    ➡ cin.getline(bildschirmpuffer ,sizeof(bildschirmpuffer));
    //PUFFERLEERUNG!

    for (int i=0; i<z; i++)
    {
    cout<<"Name: "<<flush;
    cin.getline(adresse.name ,sizeof(satz));

    cout<<"Vorname: "<<flush;
    cin.getline(adresse.vorname ,sizeof(satz));

    cout<<"Strasse: "<<flush;
    cin.getline(adresse.strasse ,sizeof(satz));

    cout<<"Hausnummer: "<<flush;
    cin>>adresse.nummer;

    ➡ cin.getline(bildschirmpuffer ,sizeof(bildschirmpuffer));
    //PUFFERLEERUNG

    datei.write((char*)&adresse,sizeof(satz));
    }
    }

    Gibt es hierzu eine elegantere Lösung?



  • Ich glaub mich zu errinern es war cin.sync() ... probier das einfach mal



  • std::cin.clear ();
    std::cin.ignore ( std::cin.rdbuf () -> in_avail () );
    

    MfG Eisflamme


Anmelden zum Antworten