cin in Schleife



  • #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
    	while(1)
    	{
    		string line1;
    		cout << "zeile eins eingeben: ";
    		getline(cin, line1);
    		string line2;
    		cout << "zeile zwei eingeben: ";
    		getline(cin, line2);
    		cout << "zahl eingeben: ";
    		int zahl;
    		cin >> zahl;
    	}
    
    	system("pause");
    
    	return 0;
    }
    

    Hallo

    Habe zum Testen dieses Programm geschrieben.
    Warum kommt bei der Wiederholung der Schleife beide STRING Eingabeaufforderungen nebeneinander ? Was ist hier faul ?

    Gruss
    Manu

    zeile eins eingeben: blabla
    zeile zwei eingeben: blabla
    zahl eingeben: 55
    zeile eins eingeben: zeile zwei eingeben:



  • nach

    cin >> zahl
    

    liegt im eingabepuffer noch ein newline, und da getline einfach nur zeilen bis zum nächsten newline liest, hat es eine leere zeile bereits gelesen.

    füg am ende folgendes snipplet ein:

    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(),'\n');
    

    clear löscht etwaige gesetzte failbits, wenn z.b. keine zahl eingegeben wurde und ignore ignoriert alle folgenden zeichen bis inklusive das '\n'.



  • 👍 danke für die schnelle Antwort....
    funktioniert.....

    Gruss Manu...


Anmelden zum Antworten