Überprüfen des Datentyps von "cin"
-
Hallo.
Ich würde gerne wissen wie ich überprüfen kann welchen Datentyp die eingabe mittels cin hat.
Mein Ziel ist ein Programm zu schreiben wo ein array(oder vector) gefüllt wird mittels der Eingabe cin und dann sollte es noch eine Überprüfung haben die dafür sorgt das nur Zahlen in mein Array übernommen werden ansonsten kommt eine neue Eingabe.
Ein Versuch von mir war so, aber das hat natürlich nicht geklappt.void testcin; while(testcin != int;) { //anweisung... }MFG
-
hilfesuchenderbla schrieb:
Ich würde gerne wissen wie ich überprüfen kann welchen Datentyp die eingabe mittels cin hat.
Das tut eigentlich cin bereits für dich. Wenn du eine int-Variable befüllst, du aber mit Buchstaben hantierst wird das fail-bit gesetzt.
C++ arbeitet mit einer statischen Typüberprüfung (cin verwendet den Typ den du angibst), und keiner dynamischen. Wenn du Zeichen ausfiltern willst musst du halt eine string-Variable befüllen und diese händisch prüfen.
cu André
-
Wie asc schon gesagt hat, cin macht das für dich.
Am besten überprüft man die Werte also direkt nach der Eingabe.
Wie das geht steht hier.
http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.3
So kannst du Eingabefehler direkt abfangen.
-
-
Wenn Du mehrere Alternativen (z.B. als float oder als int oder als ... einlesen möchtest) hast, kannst Du auch in einen string einlesen (geht immer) und dann mittels stringstream "probieren":
string str; cin >> str; istringstream ss(str); float f; if(ss >> f) { cout << "war als float interpretierbar\n"; return 1; } int i; if(ss >> i) { cout << "war als int interpretierbar\n"; return 1; } ...Das geht natürlich auch mit selbstdefinierten Typen - solange ein passender operator>>() definiert ist.
Ich sage nicht, dass das guter Stil sei ...Gruß,
Simon2.