Ihr habt mich nicht verstanden , die fehler habe ich gesehen aber Das programm läuft nicht . Bei eingabe von string läuft das Programm in unendlcihe Schleife , ich kann sagen das Programm ist überhaupt nicht richtig !!
Verstehe, spendiere nach dem std::cin.clear() noch ein std::cin.ignore(). Ich bevorzuge ürbigens eine etwas andere Variante für Benutzereingaben(ungetestet):
std::stringstream strm(line); strm>>zahl; if (!strm) { /* Fehlerhafte eingabe -> Kein double!*/ }else { input_okay = true; } }
Man kann das auch auf die Spitze treiben, und prüfen ob in strm noch weitere Zeichen sind, die der Benutzer nach dem double eingegeben hat... -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)
@Windalf Jo, ich war der mit dem gleichen Problem, das mit in_avail funzt nicht. Nur virtuals Lösung läuft zuverlässig. -- Wer früher stirbt ist länger tot.
Das in_avail ist ziemlich problematisch: Letztlich ist ein Streambuffer (also das Objekt, von dem das in_avail aufgerufen wird) "einfach" nur ein C++ Wrapper um irgendwelche Handles die das Betriebssystem bereitstellt. Je nach System und Handleart kann es ausgesprochen kompliziert sein, herauszubekommen, ob noch weitere Zeichen zum Lesen vorhanden sind. Aus diesem Grund wird zB bei der STL die mit dem gcc daherkommt stets nur 0 zurückgeliefert (wenn es sich im die Tastatur als Input handelt). Defacto ist in_avail nicht brauchbar für portable Software. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)