Idiotenfrage
-
So, hier hab ich nen kleinen auszug eines Listings:
while(!(cin>>artnum)) { cerr<<"fehler bei der Eingabe"<<endl<<"Wiederholen: "; cin>>artnum; }Warum zum geier hört er nicht auf die meldung auszuspucken??? Ich verstehe die Logik dahinter nicht...Ich ändere doch die zu prüfende Bedingung von While() mit cin>>artnum oder nicht?
Kann mir das einer erklären bzw. nen Lösungsvorschlag posten?
mfg
Greenhorn
-
bool ok = cin>>artnum; while(!ok) { cerr<<"fehler bei der Eingabe"<<endl<<"Wiederholen: "; ok = cin>>artnum; }Ich ändere doch die zu prüfende Bedingung von While() mit cin>>artnum oder nicht?
was? wieso?
-
Sobald der Eingabestream als fehlerhaft markiert ist, werden keine weiteren Eingaben durchgeführt.
@idiotenantwort: Bist du dir daher auch sicher, dass deine Lösung funktioniert?
Ich für meinen Teil hätte cin.clear() aufgerufen und danach erst wieder eingelesen:
do { if(!cin) { cerr << "Fehler bei der Eingabe!\nWiederholen: "; cin.clear(); } cin >> artnum; } while(!cin);MfG SideWinder
-
Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
SideWinder schrieb:
@idiotenantwort: Bist du dir daher auch sicher, dass deine Lösung funktioniert?
nein, überhaupt nicht. ich hab bloß seine komische programmlogik für ihn korrigiert. dass cin so nicht funktioniert ist sein problem

-
Doch das tut cin
