std::string::find substr, bin am Verzweifeln



  • Moin;

        origin = "Template bis`loop_names` asdf usw. `endloop`Template ab";
        tokenizer(){
            size_t loop = origin.find("`loop_");
            size_t endloop = origin.find("`endloop`");
            if( loop != std::string::npos && endloop != std::string::npos){
                //cout << origin.substr(0, loop) << "\n"; // Template bis
                cout << origin.substr(loop, endloop);     // `loop_names` asdf usw. `endloop`Tem
                //                                                                           ^
            }
        };
    
    

    Mein Ziel ist, den Teil von loop_names bis endloop zu extrahieren. Jedoch hat der Ergebnis-Substr noch ein Stück von dem was hinter endloop steht.

    Was mache ich falsch? Bitte Hinweise und danke im Vorab,

    MFG



  • Der zweite Parameter für substr ist die Anzahl der gewünschten Zeichen!
    Wenn also loop bei Stelle x beginnt, und endloop bei Stelle y, dann willst Du y - x + 1 Zeichen haben - aber halt, damit hast Du die Länge von endloop vergessen, die muss also noch draufaddiert werden .... + string("endloop").length



  • @Belli

    Boah, das passt ja ganz genau, herzlichen Dank!!! Echt krass mein Denkfehler, bitte um Nachsicht 😉

    Viele Grüße!


Anmelden zum Antworten