Boost logo

Boost Users :

From: Pavol Droba (droba_at_[hidden])
Date: 2006-03-26 05:16:37


Hi Jeff,

You can do this, but split is not to right function. It is a simple
wrapper over the find/split_iterator.

So I suggest you to use split_iterator directly:

   std::string some_data("1===2);
   typedef split_iterator<string::iterator> string_split_iterator;
   for(string_split_iterator It=
       make_split_iterator(some_data, first_finder("===", is_iequal()));
       It!=string_split_iterator();
       ++It)
    {
        cout << copy_range<std::string>(*It) << endl;
    }

Alternatively you can use iter_split, it has similar interface as split:

   iter_split( split_result, some_data, first_finder("===", is_iequal()));

Regards,
Pavol

On Sat, Mar 25, 2006 at 07:55:34PM -0700, Jeff Garland wrote:
>
> I've used the boost::algorithm::split successfully in the past with the
> is_any_of predicate as shown in the docs. Something like:
>
> using namespace boost_algorithm;
> std::vector<std::string> split_result;
> split( split_result, some_string, is_any_of("=+") );
>
> But now I want to match a multi char string exactly on the split. Effectively
> something like:
>
> std::string some_data("1===2);
> split( split_result, some_data, is_equal("===") ); //result gets strings "1","2"
>
> I'm not finding a predicate or easy way to do this. Is this not supported or
> am I just missing something?
>
> Thx,
>
> Jeff
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net