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.