[C++] Exceptions bei Eingabe von char, wenn int erwartet wird!

Vielleicht kennt ihr das Problem, das auftritt, wenn ihr irgendwo ein

int bla;
cin>>bla;

stehen habt.
Wenn gültige Zeichen, also Zahlen eingegeben werden, funktioniert alles bestens. Wenn aber ein Buchstabe oder ein anderes nicht numerisches Zeichen eingegeben wird, stürzt das Programm ab und ihr seid vielleicht ratlos: Was kann ich dagegen tun?

Hier ist die Lösung!
Die Funktionen

char char_eingabe()
{
 while(1)                //Endlosschleife
 {
   if(kbhit())          //wenn eine Taste gedrückt wurde
   {
   return getch();      //Endlosschleife abbrechen
   }
 Sleep(10);   //CPU entlasten, indem 10ms gewartet wird.
 }
}

int int_eingabe()
{
 char speicher = ' ';      //zwischenspeicher ist char, weil char alles enthalten darf
 while(!isdigit(speicher)) // solange die Eingabe keine Zahl war, wird die Schleife ausgeführt
 {
  speicher = char_eingabe();  //aufruf des programms, das char vom benutzer verlangt
 }

return (int)speicher-'0';
}

Die Anwendung

int bla;
cout< <"Eingabe: ";
bla = int_eingabe();

Die Funktionsweise ist ganz einfach!
Zunächst wird mit char_eingabe eine Eingabe entgegengenommen und dann wird geprüft, ob es eine Zahl war. Das geht, weil isdigit Zahlen auch in chars erkennt.
Wenn es eine Zahl war, wird ‚0‘ abgezogen und man erhält die eingegebene Zahl!

Das kommt übrigens bei meinem 4-Gewinnt-Spiel zum Einsatz!

1 Star2 Stars3 Stars4 Stars5 Stars (Wurde noch nicht bewertet)
Loading...


3 Kommentare zu “[C++] Exceptions bei Eingabe von char, wenn int erwartet wird!”

  1. Danke, sehr nützlich. Vor allem für Anfänger wie mich…

  2. 🙂 Ich bin ja selbst noch ein blutiger Noob

  3. […] [C++] Exceptions bei Eingabe von char, wenn int erwartet wird! (265) […]

Hinterlasse einen Kommentar!

Time limit is exhausted. Please reload the CAPTCHA.

»Informationen zum Artikel

Autor: Simon
Datum: 21.06.2008
Zeit: 09:00 Uhr
Kategorien: C/C++
Gelesen: 4285x heute: 2x

Kommentare: RSS 2.0.
Diesen Artikel kommentieren oder einen Trackback senden.

»Mehr zum Thema erfahren

Schlagwörter: , , , , ,

»Meta