Wort in String speichern



  • Das sieht nach JSON aus, also brauchst du einen JSON-Parser.



  • found ist vom Typ size_t und der kann keinen String aufnehmen.

    Aber möglicherweise kommst du ja mit der Position von "username", der Länge von user bzw. "username" und etwas Rechnerei soweit, dass du weißt wo babohue anfängt und aufhört.
    Dann kannst du substr nehmen.

    Oder du nimmst gleich regex


  • Mod

    Nach 5x Lesen habe ich glaube ich so langsam eine Ahnung, was du wissen möchtest:

    Wie du festgestellt hast (und wie du leicht in jeder Referenz hättest lesen können), gibt dir find die Stelle an, an der ein Suchstring steht. Was auch sonst? Der Text hinter dem Suchstring steht dann logischerweise an der Position des Suchstrings plus der Länge des Suchstrings.



  • Hey,

    vielen Dank fuer den Tip,
    das mit dem substr hat super funktioniert... jedoch war das nur ein beispiel mit dem babohue.

    der username wird automatisch generiert... dieser besteht dann zwischen 28-32 zeichen.

    z.B.
    [{"success":{"username":"aahdkwnshd21245214hahshdlanwidnakshdiansu"}}]

    wenn ich jetzt dem substr angebe der soll 32 zeichen speichern, kann es sein, dass die sonderzeichen "}}] auch mit in dem substr. gespeichert werden.

    ich hab es schon mit:

    size_t found = user.find("username");
    
    if(found != string::npos){
    string find = found.substr(25,350;
    find.replace("}", "");
    
    cout<<find<<end;
    }
    

    haette jemand eine idee, wie ich am besten die Sonderzeichen rausfiltern koennte??

    MFG



  • Das entscheidende Kriterium scheinen ja wohl die Anführungsstriche zu sein, also suche nach diesen (wie das geht solltest du ja wissen ;-).

    Vllt. solltest du einfach einen JSON-Parser aus dem Netz suchen, z.B. RapidJSON



  • Das Ende vom Usernamen ist 4 Zeichen vom Strinende (von user) weg.
    Oder such nach "}}] , dann hast du auch das Ende.

    Etwas Rechnerei eben.

    Wie flexibel willst du das haben?



  • DirkB schrieb:

    Oder du nimmst gleich regex

    Th69 schrieb:

    Das entscheidende Kriterium scheinen ja wohl die Anführungsstriche zu sein, also suche nach diesen (wie das geht solltest du ja wissen ;-).

    DirkB schrieb:

    Das Ende vom Usernamen ist 4 Zeichen vom Strinende (von user) weg.
    Oder such nach "}}] , dann hast du auch das Ende.

    JSON ist aber keine reguläre Sprache.

    Th69 schrieb:

    Vllt. solltest du einfach einen JSON-Parser aus dem Netz suchen, z.B. RapidJSON

    Das ist hier die Lösung und nichts anderes.



  • Hey leute vielen Dank nochmal fuer eure ganzen tips..

    hab es hinbekommen 🙂

    size_t found = user.find("username");
    
    if(found != string::npos){
    
    size_t end = user.find_last_of('\"');
     string userid = user. substring(25, end-25);
    cout<<userid<<end;
    }
    

    das klappt so ganz super und genau so, wie ich mir das vorgestellt habe...

    vielen Dank nochmal 🙂

    Gruss



  • Was soll denn bitte der feste Wert 25 da im Code???
    Du suchst nach dem Zeichen und verwirfst dann das Ergebnis...



  • Ach naja,

    zweimal find zu definieren und nicht zu nutzen sowie '\:' sind auch nicht gerade sehr .....
    ... erfolgreich.


Anmelden zum Antworten