PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ - Cin, Integer und Buchstaben



raian
19.10.2006, 21:59
Halli hallo, werte Programmiergemeinde.

Das letzte mal als ich mcih gemeldet hatte, hatte ich soweit ich weiß, einen Fehler mit einem meiner PHP Scripte. Jetzt hat's mir C++ angetan. Es klappt auch recht gut, doch ich stehe vor einem kleinen Problem, was nicht sein sollte.

Ich schreibe mal eben ein kleines Beispiel:



/* Die Ganzen Include-Anweisungen udn eventuell #defines usw */


//Main-Programm

int main()
{
int ans;
cout<<"Hallo! Geb mir bitte eine Zahl ein!"<<endl;
cin>>ans;
cout<<"Deine Antwort war "<<ans<<"!";

system("pause");
return(0);
}




Wenn man nun Zahlen eingibt, funktioniert alles Wunderbar. Aber sobald man mal (beispielsweise) ein "a" eingibt, spielt das gesamte Programm verrückt und widerholt als die letzte Ausgabe. Ich habe geggogelt und probiert. Nunschön, bei deisem beispiel ist es ja klar das man auchmal ein "a" eingibt, aber beispielsweise in einem Taschenrecher sollten nur Zahlen eingegeben werden usw. Wenn dann ausversehen mal ein Bcuhstabe reinkommt und das ganze programm absürtzt frustriert das natürlich..^^


Außerdem ist das frustrierend bei Langzeitanwendungen. Der User gibt alle seine Daten ein und dann auf einmal..naja, manche werden vielleicht wissen was ich meine. ;D


Deshalb würde ich gerne wissen, wie man diesen Fehler vermeidet oder umgeht oder oder oder... ich bin für Vorschläge offen. ;D


Danke im Voraus!

Niji-chan
19.10.2006, 22:35
2 Möglichkeiten, die mir direkt einfallen:

1. per exception (glaube auch bei c++ try - catch) die falscheingabe mit einer selbstgeschriebenen fehlerbehandlung abfangen

2. per if abfragen, ob es sich tatsächlich um einen Wert vom gewünschten Typ handelt - halt so ne Art selbstgebastelte exception

mfg

MagicMagor
19.10.2006, 23:17
Das einfachste wäre eben das selber abzufangen. Dafür holst du statt einen Integer erst einmal einen String aus cin raus und überprüfst dann ob es sich um eine Zahl handelt oder nicht.
Ich habe kaum mit C++ gearbeitet aber die String-Klasse hat mWn eine Funktion um aus dem String einen Integer zu erzeugen. Die Überprüfung ob nur Zahlen vorhanden sind sollte mit einer for-schleife einfach zu lösen sein (falls die Klasse nicht auch da etwas bereit hält). Durchstöber mal die Referenz zur String-Klasse (#include <string>) ob es etwas passendes gibt.

raian
20.10.2006, 12:04
Danke ihr beiden!
Beides Gute Ideen.


Ich werde mir beides mal anschauen. Danke schonmal =)