Veröffentlicht 8. September 200618 j Servus, ich möchte überprüfen ob der Inhalt eines CStrings nur Ziffern enthält oder auch auch andere Zeiche enthalten sind. Bisher prüfe ich jedes Zeichen in dem String, ich frage mich aber ob es keine schnellere bzw. kürzere und einfachere Methode gibt. Was am ende dabei herauskommen soll wäre ist: bool isStringNummeric(CString); wie gesagt, ich habe eine Lösung, aber es kann ja sein das jemand das ganze schon einmal kurz gelöst hat. TinTin
8. September 200618 j Bisher prüfe ich jedes Zeichen in dem String, ich frage mich aber ob es keine schnellere bzw. kürzere und einfachere Methode gibt. Was soll an deiner Methode kompliziert sein? Ich wuerde nun auch ueber den String iterieren und per isdigit() jedes Zeichen pruefen. Goos
12. September 200618 j hab grade mal was gemacht: bool isStringNumeric(CString csStr) { int j = csStr.GetLength() ; int l = -1; bool bRet = true; if (j > 0) { for (int k=0;k<j;k++) { char chr = csStr.GetAt(k); l = isdigit(chr); if (l == 0) { bRet = false; } } } else { bRet = false; } return bRet; }
12. September 200618 j Warum so umständlich? bool isStringNumeric(CString csStr) { int j = csStr.GetLength(); for( int i = 0; i < j; ++i ) { if( !isdigit( csStr[i] ) ) { return false; } } return true; }[/CODE]
12. September 200618 j Kurz Zwischenfrage an Klotzkopp: int j = csStr.GetLength(); for( int i = 0; i < j; ++i ) Sollte das nicht am Ende abstürzen, da i == csStr.GetLength()? :confused:
12. September 200618 j Sollte das nicht am Ende abstürzen, da i == csStr.GetLength()? :confused:Nein. Die Schleife läuft ja nur, solange i < j ist.
12. September 200618 j Sorry, war ein Denkfehler... @Guybrush Threepwood: Nun ++i erhöht ja um eins bevor es verwendet wird. War ein kleines Verständnisproblem...:floet:
12. September 200618 j Nun ++i erhöht ja um eins bevor es verwendet wird. War ein kleines Verständnisproblem...:floet: Klingt in dem Fall nach einem kleinen Verstaendnisproblem Goos
12. September 200618 j Nun ++i erhöht ja um eins bevor es verwendet wird. Mit i++ würde es auch funktionieren. Der Wert dieses Ausdrucks ist in diesem Fall der einzige Unterschied zwischen i++ und ++i, und der wird hier nicht benutzt.
12. September 200618 j Warum so umständlich? Stimmt, warum so umständlich. Der String ist ja schon nicht mehr nummerisch wenn isdigit() einmal false ist. naja, war ja nur ein erster versuch, bevor das mit dem isdigit kam war die Funktion noch schlimmer...aber vergesen wir das, heute war sowieso nicht mein Tag -> anderer Thread mit dem Debugger. EDIT: csStr.GetLenght() < 1 sollte meiner meinung nach schon abgefangen werden, sonnst ist bei einem leeren String der Returnwert dennoch true und das stimmt ja nun nicht.
13. September 200618 j csStr.GetLenght() < 1 sollte meiner meinung nach schon abgefangen werden, sonnst ist bei einem leeren String der Returnwert dennoch true und das stimmt ja nun nicht.Stimmt, da ist was dran.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.