Toimii kuten php:n explode(), mutta ei ota kolmatta parametria eikä palauta FALSE:a.
Käyttää vektoreita. Toimii vaikka erotinmerkki(jono) olisi ensimmäisenä tai viimeisenä.
Jää ikuiseen silmukkaan jos erotinmerkki on tyhjä.
http://koti.mbnet.fi/linkku-/explode/
explode.cpp
#include <string> #include <vector> using namespace std; // parametreiksi merkkijono ja erotin vector<string> explode(string s, string e) { vector<string> ret; int iPos = s.find(e, 0); int iPit = e.length(); while(iPos>-1) { if(iPos!=0) ret.push_back(s.substr(0,iPos)); s.erase(0,iPos+iPit); // poistetaan stringistä ylimääräiset scheißet iPos = s.find(e, 0); // haetaan erottimen sijainti } if(s!="") ret.push_back(s); return ret; }
main.cpp
#include <iostream> #include "vektori.cpp" int main(int argc, char *argv[]) { string stringi[4] = { "||tieto||toinen||c++||eminem||ohjelmointiputka||", "/;/2000/;/3500/;/1998/;/112/;/217/;/", " puuro leip\x84 banaani maito", "matalalattiaraitiovaunu" }; string erotin[4] = { "||", "/;/", " " , "#"}; for(int i=0;i<4;i++) { cout << "-----------\n"; vector<string> vektori = explode(stringi[i],erotin[i]); for(int i=0;i<vektori.size();i++) cout << vektori[i] << endl; } cin >> stringi[0]; return 0; } /* Ulostaa: ----------- tieto toinen c++ eminem ohjelmointiputka ----------- 2000 3500 1998 112 217 ----------- puuro leipä banaani maito ----------- matalalattiaraitiovaunu ----------- */
Aihe on jo aika vanha, joten et voi enää vastata siihen.