const char* überprüfen...aber wie in schleife?
-
hallo,
ich habe ne aufgabe, das eine Tele NUmmer eingeben werden soll, und ich folgender form wieder ausgebenen(am ende darf nie eine zahl alleine stehen):
Beispiel Eingabe: 1234567
BEispiel Ausgabe 12-34-567void ParseNumber(const char* number) { int len = strlen(number); int counter=0; if (len%2==0) { for(size_t i=0;i<len;++i) { if(counter==2) { cout<<"-"; counter=0; } cout<<number[i]; ++counter; } } else { int ulen = len-3; for(size_t i = 0;i<ulen;++i) { if(counter==2) { cout<<"-"; counter=0; } cout<<number[i]; ++counter; } for(size_t i=ulen;i<ulen+3;++i) { if(counter==2) { cout<<"-"; counter=0; } cout<<number[i]; } } }erste frage, ist das in ordnung so?
so und nun mein problem:
Ich möchte vorher prüfen, ob auch wirklich nur zahlen in dem const char* drin sind...aber wie mach ich das?
bool CheckNumber(const char* number) { int len = strlen(number); for(size_t i=0;i<len;++i) { if(strcmp(number[i], //aber hier kann ich ja nich jeden ASCII Code abfragen... } }wie mach ich das am besten??
-
if(nummer[i]>='0' && nummer[i]<='9') ...
-
hm...lol
war irgendwie der meinung, bei char muss ich das mit strcmp machen...

-
Nein, strcmp() vergleicht nur mit einer vorgegebenen Zeichenfolge - alles komplexere müsstest du mit einer eigenen for()-Schleife und zeichenweiser Überprüfung absolvieren (du könntest übrigens auch if(isdigit(nummer[i]))... verwenden).
Plan B: Wechlse zu STL-Strings, damit wird die Überprüfung wesentlich einfacher:
bool CheckNumber(const string& number) { return number.find_first_not_of("0123456789")==string::npos; }