On Wed, May 20, 2015 at 11:32 AM, Venkateswara Rao Sanaka < moderncpp.venki@gmail.com> wrote:
Hi,
I am getting two empty strings from the following program,
void boost_split_test() {
const string &text("-");
vector<string> tokens;
split(tokens, text, boost::is_any_of("-"), token_compress_on);
cout << "size of tokens " << tokens.size() << '\n';
for (auto const &e : tokens)
cout << e.size() << '\n';
}
Output:
size of tokens 2 0 0
Is this expected output? I expecting an zero split parts. Could someone clarify?
This seems reasonable to me. You asked it to split the string containing a single dash into parts separated by dashes. The string gets split into an empty string, a dash (which is not returned to you, being the separator), and an empty string. Consider splitting the input string "Foo-" (or "-Foo") compared to "Foo". One gives two strings (one before the dash, one after the dash), the other gives one string (because there are no dashes). Given a string with "n" separators, you should get "n+1" strings back (with the proviso that consecutive separators are collapsed together, so "Foo--" is treated the same as "Foo-"). -- Marshall P.S. Checking the tests, I notice that there's no coverage for this case (separators at the beginning or the end of the input). I'll put it on my list. Thanks!