Boost logo

Boost :

From: Pavol Droba (droba_at_[hidden])
Date: 2004-10-16 15:23:15


Hello,

Saturday, October 16, 2004, 5:38:31 PM, you wrote:
> I used the split function on the following string:

> vector<string> tokens;
> string str= "( 448 448 64 ) ( 448 0 64 ) ( 0 448 64 ) name 0 0 0 0.5 0.5 0
> 0 0";
> split( tokens, str, is_any_of( ()), token_compress_on ); // I pass 'space'
> , '(' and ')' into is_any_of()

> I was supposed to get 18 tokens. The first nine values, the string "name"
> and the remaining eight digits. "split" always returns a string vector
> containing 19 tokens, where the first element of the vector is an empty
> string. Why does the function insert empty strings into the collection? Can
> I use split to obtain the 18 wanted tokens?

Slip is designed to not ingnore any token. Imagine that you need to
parse comma delimited string. Even an empty string can be a valid. So
this is the reason why your result starts with empty string. It's
because your input starts with a separator.

This might seem strange in your case, but I think, it's better to put
one more empty string, that the remove it when it will be needed.

What you can do is simply to trim separators from the sequence before
splitting like
trim_if(str, is_any_of(")( ")

Regards,

Pavol


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk