Wednesday, September 26, 2018

How can I use Boost::regex.hpp library in C++?




I tried to use Boost library but I failed, see my code:



#include "listy.h"
#include
using namespace boost;

ListyCheck::ListyCheck() {

}


ListyCheck::~ListyCheck() {

}

bool ListyCheck::isValidItem(std::string &__item) {
regex e("(\\d{4}[- ]){3}\\d{4}");

return regex_match(__item, e);
}



When I tried to compile it I get those messages:




/usr/include/boost/regex/v4/regex_match.hpp:50:
undefined reference to
`boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator,
std::allocator > >,
std::allocator,

std::allocator > > > >,
boost::regex_traits >




::match()'




/usr/include/boost/regex/v4/basic_regex.hpp:425:
undefined reference to
`boost::basic_regex >





::do_assign(char const*, char const*, unsigned int)'




/usr/include/boost/regex/v4/perl_matcher.hpp:366:
undefined reference to
`boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator,
std::allocator > >,
std::allocator,

std::allocator > > > >,
boost::regex_traits >




::construct_init(boost::basic_regex > >
const&,
boost::regex_constants::_match_flags)'






etc...


Answer



Those are linker errors. The Boost regex library is not a header-only library like shared_ptr (for example) - you need to link against the .a or .lib or whatever binary library.


No comments:

Post a Comment

plot explanation - Why did Peaches&#39; mom hang on the tree? - Movies &amp; TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...