stream leeren



  • Hallo,

    wie kann ich überflüssige zeichen aus einem stream löschen? ich hab jetzt 'nen weg gefunden, das muß aber doch sicher einfacher gehen, hab nur leider nix gefunden.

    meine möglichkeit:

    cin>>c;
    cin.putback (c);
    cin>>s;   //jetzt ist cin wieder leer
    

    oder gibt es 'ne möglichkeit, einen char direkt auszulesen, so dass nach dem tastendruck keine weiteren tasten möglich sind, bzw die taste nicth mit enter bestätigt werden muß?

    "bitte drücken sie eine taste"
    [klick] und weiter gehts im programm

    der wachsende anfänger



  • du könntest es mit einem einzelnen char versuchen, der immer wieder hinein geholt wird und der, nach kurzen tests an eine Zeichenkette angefügt wird bis Enter gedrückt wird beispielsweise, oder ein Leerzeichen kommt

    char aktuell;
    char zeiket[50];
    
    for(int i = 0;;i++)
    {
         aktuell = getch();
         if(aktuell == '\n') break;
         else  zeiket[i] = aktuell;
    }
    

    Hiermit könntest du auf einzelne Zeichen überprüfen, z.b. mit switch case, oder if-Abfragen



  • Ich glaub, ich hab mich ein wenig undeutlich ausgedrückt.

    ich will eigentlich 2 benutzerabfragen machen, wo mir je ein char zurückgegeben werden soll. Wenn der benutzer nun bei der ersten frage mehr als nur ein zeichen angibt, wird das ja gepuffert, zumindest wenn ich das in folgender form mache:

    [cpp]
    cout<<"ihre erste auswahl bitte (a, b oder c):";
    cin>>c;
    //verarbeiten der ersten angabe
    cout<<"ihre zweite auswahl bitte (a, b oder c):";
    cin>>c; //wurden beim ersten cin mehr als nur 1 zeichen angegeben,
    // wird hier das zweite zeichen in c geschrieben.
    // ich möchte gern cin leeren, wenn man das so ausdrücken kann.
    //verarbeiten der zweiten angabe



  • cin.flush()



  • Vorden schrieb:

    cin.flush()

    cin hat keine flush-Methode.



  • Hallo,

    siehe Konsolen-FAQ
    Hier werden die entsprechenden Funktionen beschrieben.

    Ciao


Anmelden zum Antworten