Listing 6 The class SPStringList

// SPStringList
class SPStringList: public SPList<SPString>
{
public:
  SPStringList(int sz= 6):SPList<SPString>(sz){}
  // copy lists, need to duplicate all internal strings
  SPStringList(const SPStringList& n);
  // assignment operator
  SPStringList& operator=(const SPList<SPString>& n);
  
  int split(const char *str, const char*pat= "[ \t\n]+", int limit= -1);
  SPString join(const char *pat=" ");
  int m(const char *rege, const char *targ, const char *opts="");
  friend SPStringList m(const char *pat, const char *str,
                     const char *opts ="")
  
  {
    SPStringList l;
    l.m(pat, str, opts);
    l.shift(); // remove the first element which would be $&
    return l;
  }
  SPStringList grep(const char *rege, const char *opts="");
};
// End of File