Fehler beim einlesen mit cin.getline()



  • Hallo,
    Ich bin noch ziemlich neu hier, vielleicht könnt ihr mir ja bei diesem Problem helfen.

    Ich habe hier folgenden Code:

    #include <iostream>
    using namespace std;

    int main()
    {
            int zahl;
            char text[100];                
            while(zahl != 27)
            {
                    cout << "\nBitte Text eingeben: ";
                    cin.getline(text, 100);
                    cout << "Eingegebener Text: " << text;
                    cout << "\nBitte eine Zahl eingeben (Programm beenden mit der Zahl 27): ";
                    cin >> zahl;
            }         
            return 0;
    }
    

    Problem:

    Das erste Mal kann ich den Text über cin.getline(text, 100) einlesen und danach eine Zahl einlesen. Wenn ich aber das Programm nicht nach dem ersten Durchlauf beende sondern einen zweiten Durchlauf starte kann ich keinen Text mehr einlesen, sondern nur noch die Zahl.

    Kann mir vielleicht einer sagen woran das liegt?

    Caipi

    P.S.:
    Falls ihr mich nicht versteht, compiliert das Programm einfach einmal und führt es aus, dann wisst ihr bestimmt was ich meine 🙂



  • Hallo,

    füg einfach noch die Zeile nach cin >> zahl; ein:

    cin.get();
    

    Du hast im Puffer noch ein Zeilenumbruch stehen, da damit abgefangen wird.



  • @ carstenj

    Vielen Dank!
    Heist das, dass wenn ich per "cin >>" eine Zahl einlese und mit <ENTER> bestätige,
    Im Puffer noch das "Enter-Zeichen" stehen bleibt, und deswegen beim nächsten Aufruf von cin.getline() überhaupt nichts eingelesen wird, da ja noch das "Enter-Zeichen" im Puffer steht?

    Caipi



  • Ja, genau das ist der Fall.



  • Vielen Dank, wieder was dazugelernt 🙂

    Caipi


Anmelden zum Antworten