Überpfüfung ob die bei "cin" eingegebenen Zeichen auch Zahlen sind?!
-
HI!
weiß jemand mit welchem Code man überprüft ob die Zeichen die bei einer Abfrage eingegeben werden auch Zahlen sind?! Wenn die Eingabe falsch war, sollte eine Meldung kommen und neu abgefragt werden (das würde ich mit einer do while schleife machen)...
Danke
ehni
-
Es sollte reichen zu überprüfen, ob das badbit oder failbit gesetzt wurde:
if (std::cin >> a) //... //oder if (std::cin.fail()) //...
-
Hi!
Der Code muss so lauten:
[cpp]
#include <iostream>
#include <cctype>
#include <string>
using namespace std;string eingabe;
int main()
{
cin >> eingabe;for(int i; i <= eingabe.length(); i++)
{
if(!isdigit(eingabe[i])
cout << "Keine Zahl!";
}
return 0;
}greetz watcher
}
-
Oder einfach so:
#include <string> ... string eingabe; int zahl; cin>>eingabe; zahl=atoi(eingabe); if(zahl == 0) { cout<<"Eingabe war 0 oder keine Zahl"<<endl; } ...
-
Harhar!! schrieb:
Oder einfach so:
#include <string> ... string eingabe; int zahl; cin>>eingabe; zahl=atoi(eingabe); if(zahl == 0) { cout<<"Eingabe war 0 oder keine Zahl"<<endl; } ...
Entspricht nun aber nicht der Anforderung ?!
-
sollte man sowas nicht in die faq schieben? in den letzten paar tagen kam das 5-6 mal
-
in der faq steht schon was ueber string->zahlenkonversion. statt atoi sollte man stringstreams verwenden. und wie man einen string auf nur-zahlen konvertiert sollte eigentlich klar sein.
aber falls es in die faq kommt hier nochmal kleiner code
// string contains only number bool isNumber(std::string s) { int i = 0; while (isdigit(s[i])) ++i; return (i == s.length()); } int stringToInt(std::string s) { int ret; stringstream sstream; sstream << s; s >> ret; return ret; }
das müsste ungetestet funktionieren