Boost logo

Boost Users :

Subject: [Boost-users] cannot convert from 'const boost::iterator_range<IteratorT>' to 'const std::basic_string<_Elem, _Traits, _Ax>'
From: asif saeed (asif.lse2_at_[hidden])
Date: 2012-04-04 06:32:27


Hi,
I am using Boost 1.47.0 / Windows Server 2003 Standard 32-bit / Visual C++
2010 Express.

I copied/pasted the following code from StackOverFlow and it works:

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <string>
#include <iostream>
#include <boost/algorithm/string.hpp>
int main()
{
        std::string str = "This is a test string";

        for( boost::algorithm::split_iterator<std::string::iterator> i
            = make_split_iterator(str, token_finder(
                                        boost::algorithm::is_space(),

boost::algorithm::token_compress_on));
             i != boost::algorithm::split_iterator<std::string::iterator>();
             ++i)
        {
//std::string s = *i;
            std::cout << *i << '\n';
        }
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

However, when I assign the result of *i to an std::string then I get a
compiler conversion error:

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <string>
#include <iostream>
#include <boost/algorithm/string.hpp>
int main()
{
        std::string str = "This is a test string";

        for( boost::algorithm::split_iterator<std::string::iterator> i
            = make_split_iterator(str, token_finder(
                                        boost::algorithm::is_space(),

boost::algorithm::token_compress_on));
             i != boost::algorithm::split_iterator<std::string::iterator>();
             ++i)
        {
            std::string s = *i; ////////////////////////////COMPILER ERROR:
cannot convert from 'const boost::iterator_range<IteratorT>' to 'const
std::basic_string<_Elem,_Traits,_Ax>'
            std::cout << s << '\n';
        }
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Can anyone guide me as to how I can eliminate this error and convert the
result of the dereferenced iterator to string? I need to get an std::string.

Thanks in advance, Asif



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