backdraft Geschrieben 16. April 2003 Teilen Geschrieben 16. April 2003 Hi! Gibt es eine Funktion, mit der ich die Häufigkeit des Vorkommens eines Zeichens (z.B. eines Punktes) in einem String zählen kann? MfG backdraft Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 16. April 2003 Teilen Geschrieben 16. April 2003 Hi, das kannst du doch in 3 Zeilen selber schreiben:) Zum Beispiel so: for (int i=0; i<strlen(szString); i++) if(szString[i] == cZeichen) nAnzZeichen++; [/PHP] Gruß Guybrush Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
backdraft Geschrieben 16. April 2003 Autor Teilen Geschrieben 16. April 2003 Original geschrieben von Guybrush Threepwood Hi, das kannst du doch in 3 Zeilen selber schreiben:) Gruß Guybrush Sorry, da hatte ich mich vielleicht n bisschen unklar ausgedrückt: Ich meine bei nem CString-Objekt, nicht bei nem 0-Terminierten String. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 16. April 2003 Teilen Geschrieben 16. April 2003 Original geschrieben von backdraft Sorry, da hatte ich mich vielleicht n bisschen unklar ausgedrückt:Nicht nur das, denn CStringhat nichts mit Standard-C++ zu tun, und mit C schon gar nichts. --> Thema verschoben. P.S.: GTs Lösung funktioniert trotzdem, wenn du vorher aus dem CString einen const char* machst. Da reicht eine einfache Zuweisung, weil CString dafür einen cast-Operator hat. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 16. April 2003 Teilen Geschrieben 16. April 2003 Bei nem CString kannst auch ansich mit einer Zeile auskommen. zum Beispiel so: int anzahl = myStr.Replace(cZeichen, cZeichen); Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
A-RAM Geschrieben 16. April 2003 Teilen Geschrieben 16. April 2003 schlecht: for (int i=0; i<strlen(szString); i++) if(szString == cZeichen) nAnzZeichen++; gut: int *y = (int*) &szString + strlen(szString) for (int *i = (int*) &szString; i != y; ++i) if(szString[*i] == cZeichen) ++nAnzZeichen; Zeiger + Präfixnotation *gg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crush Geschrieben 16. April 2003 Teilen Geschrieben 16. April 2003 Nicht böse sein, aber da sind ein paar kleine Fehler reingerutscht: int *y = (int*) &szString + strlen(szString) // Vorsicht: int klappt nur bei Unicode oder WChar; for (int *i = (int*) &szString; i != y; ++i) { // Klammern vergessen, sonst wird nur einmal durchgerauscht if(szString[*i] == cZeichen) // nur *i ohne szString-Index, weil der Zeiger i selber die Adresse von szString ist ++nAnzZeichen; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
A-RAM Geschrieben 16. April 2003 Teilen Geschrieben 16. April 2003 *argh!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 17. April 2003 Teilen Geschrieben 17. April 2003 @A-RAM: Dass das ganze nur funktionieren kann, wenn sizeof int == sizeof char, hat Crush ja schon geschrieben. Aber auch der Adressoperator vor szString ist in beiden Fällen falsch. Und wenn du statt int* (wieso eigentlich int*?) char* verwendest, sind auch die casts nicht mehr notwendig. @Crush: Die Klammern sind in diesem konkreten Fall nicht zwingend notwendig. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 17. April 2003 Teilen Geschrieben 17. April 2003 @A-RAM ich weiß nicht was daran so gut sein soll, wenn du`s unbedingt mit nem Zeiger willst, hätte ich es so gemacht: for (char* p = szString; *p; p++) if (*p == cZeichen) nAnzZeichen++; [/PHP] Gruß Guybrush Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 17. April 2003 Teilen Geschrieben 17. April 2003 Hallo, Das ist auch deutlich einfacher zu verstehen als das weiter oben gepostete überaus kryptische Beispiel . In der Praxis ist das aber eher unerheblich, da ein guter Compiler die Indizes auf Zeiger abbildet (sofern es einen Laufzeitunterschied geben sollte). Nic 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.