Boost logo

Boost :

Subject: [boost] Fwd: [String algo] Breaking change between 1.41 and 1.44 in split
From: Christophe Henry (christophe.j.henry_at_[hidden])
Date: 2010-10-14 15:54:16


As I got no answer on the user list, I try again.
Is the library still maintained?

---------- Forwarded message ----------
From: Christophe Henry <christophe.j.henry_at_[hidden]>
Date: 2010/10/13
Subject: [String algo] Breaking change between 1.41 and 1.44 in split
To: boost-users_at_[hidden]

Hi,

I noticed a breaking change in the split function when the input
string is empty. Consider the following example:

#include <string>
#include <vector>
#include <iostream>
#include <boost/algorithm/string/split.hpp>
#include <boost/algorithm/string/classification.hpp>

int main()
{
   std::vector<std::string> result;
   std::string empty_string;
   boost::algorithm::split( result,
empty_string,boost::algorithm::is_any_of( "\t"
),boost::algorithm::token_compress_off);
   std::cout << "result size: " << result.size() << std::endl;
   return 0;
}

With boost 1.41 I get:
result_size: 1
With 1.44 I get:
result_size: 0

Meaning that splitting an empty string now has a new meaning. All I
found to this subject was that 1 seems to be the correct answer
(http://lists.boost.org/Archives/boost/2005/07/90266.php).
Furthermore, there has been, according to the release notes, no change
to string algo since the 1.41.
This brings me to the question, before I start updating my code, is
this change a design decision or an accident?

Thanks,

Christophe


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