String Replace



  • Moin,

    Ich habe folgendes Problem, ich möchte in meinem String \ durch \\ ersetzen.
    Durch googeln bin ich auf die Funktion replace gekommen in meinem Fall:

    string exe = "C:\folder\folder2"; // Beispiel
    exe.replace(exe.find("\"), strlen("\"), "\\\");

    Doch leider wird nur der erste backslash ersetzt (C:\\folder\folder2).
    Wie kann ich wirklich ALLE backslashs ersetzen ?

    Info: Ich habe bereits etliche Zeit damit verbracht eine Lösung zu finden doch leider will es nicht sorecht.

    Vielen Dank,
    niroxx



  • 1.) boost::algorithm::replace_all

    2.)

    void replace_all(string &s, const string &a, const string &b)
    {
        for (string::size_type i = s.find(a); i != string::npos; i = s.find(a, i + b.size()))
            s.replace(i, a.size(), b);
    }
    
    aufruf:
    replace_call(str, "\", " ");
    

    cu



  • Wunderbar, dankeschön !

    Edit:
    Was kann ich mit Schritt 1 anfangen ? Wo einfügen ?



  • Du kannst die Funktion replace_all der Bibliothek Boost verwenden statt dir selbst was zu schreiben.
    Hierzu brauchst du natürlich genannte Bibliothek.

    grüße



  • It seems this forum engine has problems translating between doubleslashes and slashes. I see different number of them in posts in normal mode and when I replay. In normal mode it seemed like some of posts had errors, in replay mode some of errors disappeared...



  • cpp1 schrieb:

    1.) boost::algorithm::replace_all

    2.)

    void replace_all(string &s, const string &a, const string &b)
    {
        for (string::size_type i = s.find(a); i != string::npos; i = s.find(a, i + b.size()))
            s.replace(i, a.size(), b);
    }
    
    aufruf:
    replace_call(str, "\", " ");
    

    cu

    ineffizient



  • ich meinte unelegant wegen dem doppelten code für find


Anmelden zum Antworten