std::string zerlegen
-
was soll das string*? const string& halte ich fuer angemessener.
-
Und hier das gleiche ohne count
template<class output, class input> void explode(output& v, const input& s, input::value_type d) { input::const_iterator i = s.begin(); while(true) { input::const_iterator c = i; i = std::find(i, s.end(), d); v.push_back(output::value_type(c, i)); if(i == s.end()) break; ++i; } } int main(int argc, char* argv[]) { std::vector<std::string> v; std::string t("bla;bla2;bla3"); std::cout << t << std::endl; explode(v, t, ';'); std::cout << v.size() << ": "; std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(std::cout, " ")); std::cout << std::endl; return 0; }
-
PeterTheMaster schrieb:
was soll das string*? const string& halte ich fuer angemessener.
Da man bei der Übergabe &myString schreiben miß wird deutlich das in diesen String etwas geschrieben wird....
-
Knuddlbaer schrieb:
PeterTheMaster schrieb:
was soll das string*? const string& halte ich fuer angemessener.
Da man bei der Übergabe &myString schreiben miß wird deutlich das in diesen String etwas geschrieben wird....
Das wird es doch gar nicht
-
Wozu die templates ?
Hab meine alte Version nochmal überarbeitet.
Anzahl dann auch mit vector.size()void explode(vector<string> &v,const string &s,const char &sep) { int pos=0; do v.push_back(s.substr(pos,s.find(sep,pos)-pos)); while((++pos+=v[v.size()-1].length())&&pos<s.length()); }
-
_Stefan schrieb:
Wozu die templates ?
[/cpp]Weils praktischer ist, wenn man die Teilstrings auch in einer list statt einem vector speichern kann.
-
kann man auch so.....
-
Erst in einen vector schreiben lassen und dann in eine list kopieren? Oder gleich die list nach vector casten?
-
wie man es halt braucht.
-
Gut das wir das geklärt hätten.
-
...davon abgesehen soll es tatsächlich Leute geben, die std::wstring verwenden.
-
tag schrieb:
template<class output, class input> void explode(output& v, const input& s, input::value_type d) {
es muss
typename input::value_type
heissen, denn input::value_type ist ein dependet type (haengt von einem template parameter ab)