find() mehrere Zeichen im Wort?



  • string.find() liefert dir einen iterator auf die Position des ersten gefundenen Zeichens, mit einem weiterem Argument kannst du die Startposition für die Suche festlegen.

    Die Lösung ist also einfach: Fange von da an zu suchen, wo du zuletzt etwas gefunden hast.



  • Hab mich noch nicht mit find beschäftigt, erst seit einer halben Stunde 😃

    Aber ich hab doch falsch angefangen .. da es eine Zahl ist, muss ich von hinten beginnen .. trodzdem werden manchmal einige Zahlen übersprungen.

    aber mit find_last_of funzt es auch nicht richtig



  • Ich hab den Fehler gefunden und bin mir auch 100% sicher,dass es der ist, der alles falsch macht.

    ich hab rfind() benutzt. Soweit so gut .. ABER .. wenn er egal wo noch eine "1" zum Beispiel findet, zählt er einfach so hoch.

    Wie könnte ich das so schreiben, dass er nur die HINTERSTE ZAHL (also als std::string) findet und eine andere hochzählt?

    MfG



  • Du meinst, du möchtest die letzte Zahl in einem String finden, und eine andere Variable in deinem Programm um diesen Wert erhöhen?

    Wenn ja, sollte dich das Stichwort "Stringstream" weiter bringen, ansonsten beschreibe bitte noch einmal genau und *klar* was du möchtest.



  • The-Kenny schrieb:

    Du meinst, du möchtest die letzte Zahl in einem String finden, und eine andere Variable in deinem Programm um diesen Wert erhöhen?

    Wenn ja, sollte dich das Stichwort "Stringstream" weiter bringen, ansonsten beschreibe bitte noch einmal genau und *klar* was du möchtest.

    ja, aber mit Stringstream hab ich es schon versucht, ich verstehe das nur nicht so ganz, wie das funktioniert :xmas2:

    ich hatte gehofft, dass man es mit wort[index].find() machen kann, klappt aber auch nicht.



  • http://c-plusplus.net/forum/viewtopic-var-t-is-155739-and-start-is-0.html

    schau dir dort mal die Funktion replace_all an



  • ? Du willst doch nur alle Aufkommen eines Zeichens in einem String haben, oder? Dann nutzt du einfach std::string::(r)find und als letzten Parameter gibst du immer die position des letzten Fundes + 1 (damit der nicht das gleiche Zeichen ∞* findet.



  • (D)Evil schrieb:

    ? Du willst doch nur alle Aufkommen eines Zeichens in einem String haben, oder?

    Ja, er soll nur einmal was finden. Da es sich in einer Schleife befindet, wird es wohl schwieriger..

    (D)Evil schrieb:

    Dann nutzt du einfach std::string::(r)find und als letzten Parameter gibst du immer die position des letzten Fundes + 1 (damit der nicht das gleiche Zeichen ∞* findet.

    Beispielcode wäre verständlicher 🙂



  • const std::string my_string("Hallo, mal sehen wie viele \'l\' in dem Satz sind!");
    
    std::size_t pos(0);
    while ((pos = my_string.find("l"), (pos > 0 ? pos + 1 : pos)) != std::string::npos)
        std::cout << "Ein \'l\' an stelle " << pos << std::endl;
    

    ... sonnst



  • du hasd im einen gebe wo nur ein 1 iis


Anmelden zum Antworten