C++ std::string zwischen zwei Zeichen löschen?


06.02.2022, 18:02

Beispiel 2: Wenn ich den String habe "Hallo $Welt$ test $TEST2$" und als delimeter "$" benutze soll der String am Ende so aussehen: "Hallo test "


06.02.2022, 18:33

Mir hat leider keiner geantwortet aber nach sehr viel recherchieren konnte ich zum Glück selbst eine Lösung finden:

std::string ChangeString(std::string test) {
    bool inbracket = false;
    std::string outStr;
    for (size_t i = 0; i < test.size(); ++i)
    { 
        char ch = test[i];
        if (ch == '\'') //Anfangszeichen
           inbracket = true;
        else
        if ( ch == '\'') //Endzeichen
           inbracket = false;
        else
        if ( !inbracket )
           outStr += ch;
     }
     test = outStr;
     return test;
}

1 Antwort

Ein RegExp wäre hier vermutlich am einfachsten in der Umsetzung, sonst müsstest Du halt zu Fuß splitten und zusammenfügen.

Ergänzung:

Mit std::string::erase(start,len) lässt sich ein Teilstring entfernen. Mit der find*-Familie an Methoden lassen sich Positionen ermitteln.