TinTin Geschrieben 8. September 2006 Teilen Geschrieben 8. September 2006 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 8. September 2006 Teilen Geschrieben 8. September 2006 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TinTin Geschrieben 12. September 2006 Autor Teilen Geschrieben 12. September 2006 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; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 12. September 2006 Teilen Geschrieben 12. September 2006 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] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 12. September 2006 Teilen Geschrieben 12. September 2006 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: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 12. September 2006 Teilen Geschrieben 12. September 2006 Sollte das nicht am Ende abstürzen, da i == csStr.GetLength()? :confused:Nein. Die Schleife läuft ja nur, solange i < j ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 12. September 2006 Teilen Geschrieben 12. September 2006 Ach ja, stimmt ja...aber "übersieht" er nicht das erste Zeichen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 12. September 2006 Teilen Geschrieben 12. September 2006 Wieso sollte er das erste Zeichen überspringen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 12. September 2006 Teilen Geschrieben 12. September 2006 Sorry, war ein Denkfehler... @Guybrush Threepwood: Nun ++i erhöht ja um eins bevor es verwendet wird. War ein kleines Verständnisproblem...:floet: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 12. September 2006 Teilen Geschrieben 12. September 2006 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 12. September 2006 Teilen Geschrieben 12. September 2006 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TinTin Geschrieben 12. September 2006 Autor Teilen Geschrieben 12. September 2006 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 13. September 2006 Teilen Geschrieben 13. September 2006 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.