# Prüfen ob Zeichen eines String eine Zahl



## MartinFS (29. Juni 2005)

Hallo,

ich habe hier einen AnsiString, bei dem ich gerne prüfen würde ob das erste Zeichen eine Zahl ist oder nicht.
Wenn keine Zahl, dann muss der String um das erste Zeichen gekürzt werden (das ist kein Probleme).
Statt in der if-Bedingung nun immer meinAnsiString.SubString(0,1) == "0" || meinAnsiString.SubString(0,1) == "1" || meinAnsiString.SubString(0,1) == "2" || etc... zu prüfen, würde ich gerne eine elegantere Möglichkeit verwenden.

Kann mir da jemand einen Tipp geben?


Danke.


gruß,
MFS


----------



## deepthroat (29. Juni 2005)

```
#include <ctype.h>

if (isdigit (meinAnsiString[0])
```

(allerdings kenn ich die AnsiString Klasse nicht; ist da ein char operator[]() definiert?)


----------



## Tobias K. (29. Juni 2005)

moin


So würde ich einen kompletten String untersuchen:

```
string eingabe = "1223345";

for(int i=0; i<eingabe.length(); i++)
        if(isdigit(eingabe[i]) == 0)
		cout<<"Fehler";
```

Oder wenn man sich isdigit sparen will:

```
for(int i=0; i<eingabe.length(); i++)
        if(eingabe[i] >= '0' && eingabe[i] <= '9')
		cout<<"Fehler";
```
Eine Funktion, um einen kompletten String zu untersuchen, gibt es glaub ich noch nicht.
Also immer Zeichen für Zeichen.

AnsiString lässt sich eigentlich genauso handhaben wie string.


mfg
umbrasaxum


----------



## MartinFS (29. Juni 2005)

Hallo....

vielen Dank für die Hilfe. Ich habe mitlerweile aber eine nicht ganz so schicke Lösung gewählt, die aber auch funktioniert... einfach ein Leerzeichen mehr dazwischen lassen, so dass es egal ist, ob der String 1, 2 oder 3-stellig ist. 


gruß,
MFS


----------



## Tobias K. (29. Juni 2005)

moin


Wie meinst du denn das?


mfg
umbrasaxum


----------



## MartinFS (29. Juni 2005)

Hi,

das ist bei einer einstelligen Zahl zwei vorangestellte Leerzeichen habe, die bei der Typwandlung zum int automatisch wegfallen. So kommt das System mit Zahlen von 0 bis 999 klar.


Gruß,
MFS


----------

