cin-Eingabefehler abfangen und behandeln



  • Hallo zusammen,

    ich möchte ein Programm schreiben, mit dem ich double-Werte in einen Vector einspeisen kann.
    An einer Stelle komme ich nicht weiter: Die Eingabe soll mit dem Eingeben eines bestimmten Buchstabens beendet werden. Wie lässt sich das realisieren, wenn ich zuvor nur double-Werte entgegennehme?

    Beste Grüße und vielen Dank vorab.
    Martin

    Mein bisheriger Code:

    int main() {
    
        vector<double>vValue;
        double tempValue;
        bool loopVar = true;
    
        cout << "Geben Sie einige Zahlen ein (mit 'q' beenden Sie die Eingabe):";
        try {
            while (loopVar == true) {
                if (!(cin >> tempValue)) {
                    throw 1;
                };
                if (tempValue == 'q') {
                    loopVar = false;
                }
                vValue.push_back(tempValue);
            }
        }
        catch(int x){
    
        }
    
        return 0;
    }
    


  • Schau mal hier:

    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main()
    {
    	vector<double> vec;
    
    	for(;;)
    	{
    		double d;
    		if( cin>>d )
    		{
    			vec.push_back( d );
    		}
    		else
    		{
    			cin.clear();
    			char c;
    			cin >> c;
    			if( c=='q' )
    				break;
    			cin.ignore(999,'\n');
    		}
    	}
    }
    


  • Sau gut, vielen Dank! Manchmal ist es so einfach und trotzdem wäre ich da nicht so schnell drauf gekommen :p


Anmelden zum Antworten