Wie finde ich heraus ob ein String eine Zahl (float oder int) repräsentiert?
-
Titel=Frage
-
int dummy; if(sscanf(string, "%f", &dummy)) // ist eine zahl
-
ich würds mit nem stringstream machen.
std::stringstream stream("Hallo");
int i;
stream >> i;
und bei nem fehler werden dann irgendwelche error-flags gesetzt. kenn mich aber nicht aus ^^
-
if(stream >> dummy) ...
-
nur ziffern -> int
ziifern und punkt -> float
-
@net: 12345678901234 = int ?
(32bit system)
-
ich weis nicht, obs jetzt nicht eher ne kanone auf spatzen ist, aber wnen du einen längeren string "parsen" musst->boost::spirit
-
-
Nein, nein ich will eigentlich nur die eingabe einer EditBox(WinAPI) überprüfen, also keinen längeren string. (5 Zeichen)
-
Gabs da nicht ne Funktion isDigit()?
-
Hmm... die Methoden mit den Streams funktionieren nicht da wenn der String
z.B.: "2n" "2323.3x2" "8t222" ist keine Fehler zurückgeliefert wird. Nur bei Eingaben von "x2222" oder "y" also dort wo kein numerisches Zeichen am Begin des strings steht.
Ich glaube die einfachste Methode wird es sein mit isdigit jeden einzelnen character durchzugehen bis ich auf \0 stosse.
bessere Vorschläge? any?
-
ewitt7u0 schrieb:
Hmm... die Methoden mit den Streams funktionieren nicht da wenn der String
z.B.: "2n" "2323.3x2" "8t222" ist keine Fehler zurückgeliefert wird. Nur bei Eingaben von "x2222" oder "y" also dort wo kein numerisches Zeichen am Begin des strings steht.mit stringstream, müsste man noch genauer prüfen können:
stringstream s(string); if(stream >> dummy && s.eof()) ...
-
oder atoi
-
nein, prüfen geht damit nicht, die liefern einfach 0.