die anzahl der teilstrings in einer zeichenkette bestimmen
-
Auch auf die Gefahr hin mich "unbeliebt" zu machen
Ich würde ungefähr so was preferieren, zuwas progged man schließlich C und nicht Pascal oder Basic
Beispiel:char *p, *pmstr, *ptstr; int counter; AnsiString mainstr="alles scheisse deine elli und nochmal alles scheisse deine elli"; AnsiString teilstr="elli"; pmstr=mainstr.c_str(); ptstr=teilstr.c_str(); for(counter=0; (p=strstr(pmstr, ptstr))!=NULL; counter++, pmstr=p+1); // counter enhält hier die Anzahlo der gefundenen Teistrings
Man beachte, hier werden keine Schreibzugriffe in den AnsiString vorgenommen und Lesen ist ja nicht verboten :p
-
hehe, auch net schlecht
aber was is jetzt schneller bei größeren texten (strings)?das ganze soll nämlich später auf ne datei angewendet werden.
-
Peter schrieb:
Man beachte, hier werden keine Schreibzugriffe in den AnsiString vorgenommen und Lesen ist ja nicht verboten :p
Das ist auch in den seltensten Fällen das Problem. Das Problem ist vielmehr, dass sich der mit c_str() ermittelte Zeiger radikal ändern kann, wenn ein anderer String da reingepackt wird. Ich dachte ich hätte dir das mal erklärt? (o;
-junix
-
@junix
*LOL* Das ist mir schon bewusst, in kritischen Fällen empfiehlt sich deshalb ja auch ein AnsiString::Unique, aber darüber brauchen wir nicht mehr diskutieren. Ich meinte diese Bemerkung ja auch ein wenig ironisch in Bezug auf diesen Thread in welchem ich etwas für "Aufregung" sorgte
-
mmmh ob du mich richtig verstanden hast? Auch der Lesende Zugriff auf einen mit c_str() ermittelten Zeiger ist nicht unkritisch.
-junix
-
.. ich denke zu wissen, was man bei AnsiString und Pointern beachten muß und wann ..
-
Du ja. Aber obs ein Anfänger oder ein fortgeschrittener Anfänger weiss? )o:
-junix
-
Okay, das ist dann ein anderer Aspekt
Aber in meinem Beipiel oben wird es bestimmt keine Probleme geben es sei denn, ich habe noch einen groben logischen Fehler drinnen
-
...oder schlechtes Multithreading... ...oder andere blöden nebeneffekte... oder...
-junix
-
Jou, das könnte aber auch bei einem "normalen" C-String passieren
Aber Du weißt ja selber, es gibt fast nix wwas es nicht gibt