String auf numerisch überprüfen
-
Hallo Leute,
ich muss bei einem String überprüfen, ober der Inhalt nur aus Zahlen besteht, oder ob auch Buchstaben, Sonderzeichen, ... enthalten sind. Wenn ich es mit einem switch in einer for-Schleife mache, dann weiß ich aber nicht die Länge von dem String, da ich der Methode ja nur einen Pointer übergebe.
IsNumeric hab ich auch schon probier - bin aber nicht damit klar gekommen.
Könnt ihr mir da weiter helfen?
MfG, Andy
-
Hallo
benutzt AnsiString. Dort kannst du die Länge ganz einfach feststellen.
(das hier ist das BCB-Forum. Wenn du mit char * arbeiten willst, mußt du ins C++ Forum)bis bald
akari
-
Andy-Ypsi schrieb:
...dann weiß ich aber nicht die Länge von dem String, da ich der Methode ja nur einen Pointer übergebe.
die länge brauchste auch nicht, weil strings immer eine '\0' am ende haben. einfach alle zeichen durchrattern bis eins gefunden wird das < '0' oder > '9' ist (keine zahl) oder die '\0' gefunden wird (alles zahlen)
-
wenn ich mich richtig errinere gibts ne funktion um einen ansistring direkt in einen int wert umzuwandeln und wenn das nicht klapt, gibts einen default wert..
weiss sie aber gerade nicht..
-
Hallo
AnsiString x
x.ToIntDef(-1) gibt -1 zurueck wenn x kein Int-Wert ist
MfG
Klaus
-
KlausB schrieb:
Hallo
AnsiString x
x.ToIntDef(-1) gibt -1 zurueck wenn x kein Int-Wert ist
MfG
Klaus
genau das
-
Die Funktion gibt allerdings auch dann -1 zurück wenn genau diese Zahl im String steht.

ToInt() wirft dagegen eine EConvertError Exception wenn keine Umwandlung möglich ist.
-
Also ich weiß nich ob ich was falsch verstanden habe, aber kann man die länge eines strings nich so ermitteln:
string k=("123456789"); cout<<k.length();und kann man nicht mit atoi einen string in int wandeln?

-
Du verwendest std::string. Da kann man die Länge natürlich mit length() oder mit size() prüfen. Bei AnsiString (oder String) mit Length().
atoi arbeitet mit char*. Zur Umwandlung von std::string in Zahlen siehe auch hier http://www.c-plusplus.net/forum/viewtopic.php?t=39488
-
Hey, cool.
Danke, ihr habt mir sehr weitergeholfen!Gruß, Andy