C-Strings oder string Datentyp ???



  • Hallo zusammen,

    ein anderes Problem:
    In C++ kann ich einen String mittels strtok auseinanderpflücken,
    Und zwar, wenn ich habe
    hallowelt.jpg
    und
    hallokarl.jpg
    kann ich die beiden Strings auf hallowelt und hallokarl verkürzen um diese so besser mit strCompare vergleichen zu können.

    meine Strings sind in diesem Fall aber char*.

    Gibt es die Möglichkeit das Ganze mit Hilfe des Datentyps String zu verwirklichen?

    Vielen Dank
    Tina



  • Hallo

    natürlich geht das mit den std::string-Methoden.

    bis bald
    akari



  • Z.B. so

    Deque<String> tokenize(const String& str, const String& delimiters) {
    	Deque<String> q;
    	uint index = 0;
    	uint pos = 0;
    	String s = trim(str);
    	while (pos != String::npos) {
    		pos = s.find_first_of(delimiters, index);
    		if (pos == index) {
    			if (s.at(pos) == ' ') {
    				index = pos + 1;
    			} else {
    				q.push_back(s.substr(index, 1));
    				index = pos + 1;
    			}
    		} else if (pos == String::npos) {
    			q.push_back(s.substr(index));
    			break;
    		} else {
    			q.push_back(s.substr(index, pos - index));
    			index = pos;
    		}
    	}
    	return q;
    }
    


  • #include <vector>
    #include <string> 
    
    /*
      Split() teilt einen string an einem bestimmten Zeichen in kleine Teile. 
      str     ist der zu teilende String vom Typ std::string
      token   ist das Trennzeichen
      res     referenz auf einen Stringvektor vom Typ std::vector<std::string>
    */
    void Split( std::string const & str , char token , std::vector<std::string> & res )
    {
      std::string::size_type pos  = std::string::npos , last = 0; 
    
      while( (pos = str.find( token , last = pos + 1 )) != std::string::npos )
         res.push_back(str.substr(last,pos - last));
    
      res.push_back(str.substr(last));
    }
    


  • In den boost Libs gibts genug splitter und tokenizer.



  • hm....also wenn ich nur das .jpg weg machen wollte, dann würede ich wohl einfach find_first_of() und substr() oder sowas nehmen...hm...


Anmelden zum Antworten