Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: C++: Explode

Linkku [29.11.2004 16:43:00]

#

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
-----------
*/

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta