Schon wieder StringBetween(string.substr())...



  • guten morgen.
    ich versuche gerade die Funnktion StringBetween, so umzuschreiben, dass ich damit auch mehrere Wörter "herausholen" kann.
    beispiel:
    Ich hol mir den Source von google.de per WSA und möchte anschliessend alle Cookies extrahieren.

    Content-Type: text/html; charset=UTF-8
    
    Set-Cookie:PREF=ID=dc0ae71c55dd1967:TM=1262770468:LM=1262770468:S=Lg6uv9GIPqdDK74-;expires=Fri, 06-Jan-2012 09:34:28 GMT; path=/; domain=.google.de 
    
    Set-Cookie: NID=30=Puj4EOco_v8gq6AokQ5KFZrxjfnmt46E2Hx023IRHfOxfUJEvmrN19F9p0EsGswuZB0JLYminJlPK0bl9PdzeyQuKu2qB-GAjEgmO_Wy-euO2iWpO-8sVknNN0m9h-i5; expires=Thu, 08-Jul-2010 09:34:28 GMT; path=/; domain=.google.de; HttpOnly
    

    Jetzt möchte ich folgendes erreichen.
    Ich möchte beide Namen samt Inhalt von den Cookies haben.
    Hier ist meine Funktion:

    string StringBetween(const string& input, const string& left, const string& right)
    {
        size_t posLeft, posRight;
    
        posLeft = input.find(left);
        posRight = input.find(right);
    
        if (posLeft == string::npos || posRight == string::npos)
        {
            return ""; // Nicht gefunden
        }
    
        posLeft += left.length();
        posRight += right.length();
        string ergebnis1 = input.substr(posLeft, input.length() - right.length() - left.length());
        int formel = (input.find(right) - posLeft);
        string ergebnis2 = ergebnis1.substr(0, formel);
        return ergebnis2;
    }
    

    Leider schaffe ich es nicht immer den Teil, den ich schon behandelt habe, per string.substr() rauszuschneiden...
    mfg
    @night@



  • Wenn ich mich nicht täusche, ungetestet:

    string StringBetween(const string& input, const string& left, const string& right)
    {
        size_t posLeft, posRight;
    
        posLeft = input.find(left);
        posRight = input.find(right);
    
        if (posLeft == string::npos || posRight == string::npos)
        {
            return ""; // Nicht gefunden
        }
    
        posLeft += left.length();
    
        string ergebnis1 = input.substr(posLeft, posRight - posLeft);
        return ergebnis1;
    }
    


  • Zwar hat deinen Antwort iwie keinen Sinn, aber das Problem hat sich ohnehin gelöst^^
    mfg
    @night@



  • Hat sie nicht? Wäre mir neu. Naja.

    EDIT: Hab meine Antwort mal getestet: Funktioniert.


Anmelden zum Antworten