cin.get() oder getch()



  • Hi,

    ich hab folgendes Programm:

    //-------------------------------------------------------------------------------
    #include <iostream>
    //-------------------------------------------------------------------------------
    using namespace std;
    //-------------------------------------------------------------------------------
    int main()
    {
    	double zahl, summe=0;
    	cout << "Bitte Zahl eingeben:" << flush;
    	while(true)
    	{
    		cin >> zahl;
    		if(cin.fail())
    		{
    			cin.clear();
    			cout <<"#FEHLER#!" << endl;
    			cin.seekg(0l,ios::end);
    			continue;
    		}
    		if(zahl ==0)
    		{
    			break;
    		}
    		summe+=zahl;
    		zahl=0;
    		cout << "Bitte Zahl eingeben:" << flush;
    	}
    	cout << "Gesamtsumme: " << summe;
            cin.get();
    	return 0;
    }
    

    Doch ich seh die Ausgabe von Gesamtsumme nicht.
    Wenn ich allerdings cin.get() durch getch() ersetzt (natürlich auch #include <conio>) dann seh ich diese Ausgabe.

    Kann es sein das cin.get nicht immer funktioniert, oder funktioniert das nur hier nicht(falls ja, wieso?)?



  • Was mir dazu einfällt:
    - cin aufs failbit hin überprüfen (vielleicht ist ja vorher was schiefgelaufen)
    - cin.get() verlangt meines wissens ein enter, getch() nur eine beliebige Taste
    - cin.get() ist vorzuziehen, da C++, getch() ist C
    - Mach dich schlau in der konsolen-FAQ, da gibts bestimmt was dazu 🙂



  • pumuckl schrieb:

    - cin aufs failbit hin überprüfen (vielleicht ist ja vorher was schiefgelaufen)

    Erstaunlicherweise macht er das sogar 😉

    (@Folcan: Aber ein cin.seekg() Aufruf ist etwas witzlos - erst recht an diese Zielposition :D)

    - cin.get() verlangt meines wissens ein enter, getch() nur eine beliebige Taste

    cin.get() liest vor allem das erste, was im Tastaturpuffer steht - also das ENTER, mit dem du die letzte eingegebene Zahl bestätigt hast.

    - Mach dich schlau in der konsolen-FAQ, da gibts bestimmt was dazu 🙂

    Dem kann ich mich nur anschließen - der oberste Beitrag in der Konsolen-FAQ ist etwas für dich.



  • Super danke, funktioniert.

    (@Folcan: Aber ein cin.seekg() Aufruf ist etwas witzlos - erst recht an diese Zielposition :D)

    Stimmt eigentlich 😉

    Das Programm is aus nem Buch, nur das cin.get() war von mir.

    Gruß Folcan



  • CStoll schrieb:

    pumuckl schrieb:

    - cin aufs failbit hin überprüfen (vielleicht ist ja vorher was schiefgelaufen)

    Erstaunlicherweise macht er das sogar 😉

    Sry war spaet nachts, offenbar war ich nicht mehr ganz frisch unter der Peruecke 😉



  • Ist ja auch verständlich um 3:30h 😉


Anmelden zum Antworten