Eingabebereich eingrenzen in C++ mit 'cin'

Moin!

Ich habe folgendes Problem:

Ich habe ein Programm geschrieben, welches Dezimal-Zahlen in ein anderes Zahlensystem unrechnet und ausgibt. Die Eingabe wird per 'cin' in einer unsigned long integer-Variable gespeichert und wenn man jetzt eine Zahl eingibt, die über dessen Wertebereich hinaus geht, gibt er endlos irgendwelchen Müll aus. (Wenn man statt Ziffern andere Zeichen eingibt passiert das selbe). Jetzt meine Frage: Kann man das irgendwie begrenzen, dass man nur Zahlen eingeben kann die im Werteberich von unsigned long int-Variablen liegen und das das Programm abbricht (Fehlermeldung), wenn man Buchstaben oder größere Zahlen eingibt?

Vielen Dank im voraus!
 
du musst den Tastaturpuffer löschen ...
Code:
cin.clear();
while (cin.get() != '\n');
sollte reichen, aber bin mir nicht ganz sicher
 
mit atoi(var) könntest du die eingabe in Zahlen umrechnen

atoi() = ascii to integer

wenn man einen Buchstaben oder sonst ein Zeichen eingibt, dann kommt 0 raus.

du könntest di eingabe auch prüfen, wenn du die eingabe als string speicherst und dann einfach mit einer If-Abfrage kontrollierst.

i hoff ich konnte helfen...

BITTE AUSBESSERN WENN ICH EINEN BLÖDSINN GESCHRIEBEN HABE

mfg sym
 
cin "erkennt" selber um welchen datentyp es sich handelt, daher muss die eingabe nicht erst umgewandelt werden.


das problem ist - wie gesagt der tastaturpuffer, da bei zu großen zahlen oder zeichen reste einfach im buffer bleiben und das bringt das prog durcheinander. also jedes mal vor dem einlesen den puffer löschen .. oder die ganze zeile einlesen und spaßhaben .. je nach geschmack.
 
Zurück
Oben