zeiche aus einem string rauschschneiden



  • Huhu,

    ich bin auf der scuhe nach einem algorithmus der mir aus einem string einen teil rausschneiden kann.

    Werde aber nicht fündig :(. Der Algorithmus oder die methode (von der string lib sollte es sie geben) sollte von einem bestimmten Punkt im String bis zu einem weiteren bestimmten Punkt im string alles löschen bzw durch "" ersetzen.

    also z.b. str.ersetze(str[3],str[7]); Aus dem String wird dann alles von Pos 3 bis 6 gelöscht. Ich meine auch sowas bereits mal gesehen zu haben nur leider finde ich diese methode/alogorithmus nirgends mehr 😞

    lg Jud4s



  • Wo hast du denn gesucht?
    In der Referenz wohl nicht: http://www.cplusplus.com/reference/string/string/erase/



  • doch habe ich -.-

    doch aber da gibt es keine die mit indexen arbeitet.... und wenn ich probiere die indexe in Pointer umwandeln will gibts ne ellenlange fehlermeldung und es klappt nicht:

    line_of_interrest.replace(&line_of_interrest.rfind("(")), &line_of_interrest[line_of_interrest.length - 1] , "");
    

  • Administrator

    Jud4s schrieb:

    doch aber da gibt es keine die mit indexen arbeitet....

    Du brauchst eindeutig eine Brille:
    string& erase ( size_t pos = 0, size_t n = npos );
    Von der Position pos aus, werden n Zeichen gelöscht. Und wenn du mir nun sagst, dass du aus zwei Indices nicht eine Distanz ausrechnen kannst, dann solltest du dich vielleicht zuerst ein wenig noch mit Mathe beschäftigen, bevor du anfängst zu programmieren 😉

    Grüssli



  • line_of_interrest.erase(line_of_interrest.rfind("(")), line_of_interrest.length() - 1 - line_of_interrest.rfind("(")) , "");
    

    dann müsste das doch funktionieren (wenn ich nicht wirklich zu blöd zum differenzausrechnen bin)... aber mein Compiler gibt mir n syntax error.



  • gut nachdem ich die dummen klammerfehler weggemacht habe kommt das raus:

    line_of_interrest.erase(line_of_interrest.rfind("("), line_of_interrest.length() - 1 - line_of_interrest.rfind("(") , "");
    

    und es klappt immer noch nicht :(, versteh ich die methodendefinition falsch?



  • man merke sich: "wenn da erase steht heißt das löschen und nciht ersetzen -.-"

    Srry, war 'n Hausgemachter Fehler. der dritte Parameter war schwachsinn.



  • line_of_interrest.erase ( 
        line_of_interrest.rfind(
            "("
        )
    ),
    line_of_interrest.length() - 1 -
    line_of_interrest.rfind(
        "("
    )
    ) , ""
    );
    

    Da sind meiner Meinung nach ein paar zu viele schließende Klammern drinnen...

    Und wenn man Probleme mit einem Stück code hat schreibt macht man

    1. Berechnungen Schritt für Schritt
    2. Macht Debug-Ausgaben zu Überprüfen
      dann findet man den Bösewicht auch...

Anmelden zum Antworten