SubString anhand von t_pos(itionen) heraus"filtern"



  • Hey Leute... hab ne ganz einfache frage...

    ich habe zwei t_pos variablen...
    mit bestimmten werten, die ich schon vorher ausgelesen habe...
    desweiteren habe ich einen string ... und ich möchte jetzt anhand dieser "Koordinaten" einen substring aus dem string rausschneiden... hier mal als beispiel, damit das ganze verständlicher ist:

    t_pos koordinate1 = 4;
    t_pos koordinate2 = 9;
    string test = "Hey Peter ich bins";
    
    //und dann quasie sowas:
    
    string sub;
    sub = test.rausschneiden(4,9); // Sollte dann 'Peter' ergeben
    

    Danke hoffe ihr versteht was ich meine und könnt mir helfen...

    sry wenn ich mich etwas komisch ausgedrückt habe oder etwas "noobig" klinge 😉



  • Du suchst wahrscheinlich substr() , auf www.cplusplus.com findest du die Dokumentation dazu. Vorsicht, der zweite Parameter ist die Anzahl Elemente und kein Index.

    Was ist eigentlich t_pos für ein Typ?



  • hab mich ganz dumm verschrieben... tut mir leid -.-
    meinte natürlich size_t



  • Wenn man die ganzen Wörter einzeln haben will, ist auch boost::tokenizer eine Idee:

    // Tokenize string			
    				const boost::char_delimiters_separator<char> sep(" ");
    				boost::tokenizer<> tokenizer(line, sep);
    				boost::tokenizer<>::iterator it = tokenizer.begin();	
    // mit iterator arbyten
    


  • Scorcher24 schrieb:

    Wenn man die ganzen Wörter einzeln haben will, ist auch boost::tokenizer eine Idee:

    // Tokenize string			
    				const boost::char_delimiters_separator<char> sep(" ");
    				boost::tokenizer<> tokenizer(line, sep);
    				boost::tokenizer<>::iterator it = tokenizer.begin();	
    // mit iterator arbyten
    

    Das ist IMHO ziemlicher Overkill.

    #include <iostream>
    #include <sstream>
    #include <string>
    
    int main()
    {
    	std::stringstream strm("Hey Peter ich bins");
    
    	std::string buf;
    	while (strm >> buf)
    	{
    		std::cout << "'" << buf << "'" << std::endl;
    	}
    }
    


  • hkhjk schrieb:

    Scorcher24 schrieb:

    Wenn man die ganzen Wörter einzeln haben will, ist auch boost::tokenizer eine Idee:

    // Tokenize string			
    				const boost::char_delimiters_separator<char> sep(" ");
    				boost::tokenizer<> tokenizer(line, sep);
    				boost::tokenizer<>::iterator it = tokenizer.begin();	
    // mit iterator arbyten
    

    Das ist IMHO ziemlicher Overkill.

    #include <iostream>
    #include <sstream>
    #include <string>
    
    int main()
    {
    	std::stringstream strm("Hey Peter ich bins");
    
    	std::string buf;
    	while (strm >> buf)
    	{
    		std::cout << "'" << buf << "'" << std::endl;
    	}
    }
    

    Wenns nur um einen Satz geht mit einzelnen Leerzeichen, ja gut, da isses das vllt. Aber wenns mal 2-3 Zeichen sind, dann ist man froh drum.
    Kann man sich jetzt drüber streiten :). Beides ist eine legitime Lösung.


Anmelden zum Antworten