Anfänger-Probleme mit Strings [beantwortet]
-
Ich mal wieder, hallo.
Falls mich der AntiSpambot noch nicht filtert, hier meine Frage:
Ich möchte eine Funktion schreiben, die einen Text auf sich wiederholende Zeichenfolgen untersucht. Der Text sei in einem String abgelegt.
Dazu kopiert die Funktion immer 'len'-viele Zeichen aus dem String und überprüft ab jener Stelle den restlichen Text, ob diese Zeichenfolge nochmal vorkommt - bei einem Treffer soll die Funktion den enstprechenden String und den Abstand der beiden Strings ausgeben.
Vermutlich ist meine Lösung die ineffektivste, die möglich war, aber ich wollte sie erst mal zum Laufen bringen.
Aber leider läuft sie nicht. Sie gibt weder die Treffer-Strings noch sonst was aus. Und ich finde mal einfach wieder meinen Fehler nicht.
Ein dickes Danke an jeden, der mir hilft:void distance(string & text, int len) { int i, j, k; string part, comp; for(j=0; j < text.length() - len; j++) { //durchläuft den Text und legt einen Vergleichsstring der Länge 'len' an part.clear(); comp.clear(); //leere beide Strings, um sie dann neu zu beschreiben for(i=j; i < j + len; i++) part += text[i]; for(k = j + len; k < text.length() - len; k++) { //durchläuft ab dem Vergleichsstring den restlichen Text bis zum ersten Treffer for(i = k; i < len; i++) comp += text[i]; if(comp == part) { //beim ersten Treffer gebe String und den Abstand aus cout << comp << ": " << (k-j) << endl; break; } } } }Vielen lieben Dank!
-
Schau mal nach den string Methoden substr() und find().
Um deine Lösung zu untersuchen, benutze einen Debugger. Da kannst du ganz einfach sehen was passiert.
-
Mensch, das ist ja genau das was ich gebraucht hab - vielen Dank!

Das probier ich gleich mal.
-
Hat geklappt, vielen Dank!
