为什么g ++没有看到boost :: regex_search()函数?

时间:2013-05-23 23:38:41

标签: c++ g++ boost-regex

我正在尝试针对boost :: regex库进行编译,但是一旦我尝试使用regex_search()函数,它就会barfs:

$ g++ -Wall -L/cygdrive/c/Users/Adrian/Downloads/boost_1_53_0/stage/lib -std=c++0x exec.cpp -lboost_regex -o exec

exec.cpp: In function ‘int main(int, char**, char**)’:
exec.cpp:32:3: error: ‘regex_serach’ is not a member of ‘boost’
makefile:3: recipe for target `exec' failed
make: *** [exec] Error 1

以下是一些引发此错误的示例代码:

#include <boost/regex.hpp>

int main(int argc, char* argv[], char* env[])
{
  typedef boost::match_results<string::const_iterator> matches_t;
  typedef matches_t::const_reference match_t;
  boost::regex x("");
  string str;
  matches_t what;
  boost::match_flag_type flags = boost::match_default;
  boost::regex_serach(str.begin(), str.end(), what, x, flags);
  return 0;
}

第32行是regex_search所在的行。 cygwin下的g ++版本是4.5.3。 Boost版本是1.53。如果我注释掉regex_search行,它编译得很好。想法?

1 个答案:

答案 0 :(得分:0)

#include <boost/regex.hpp>

int main(int argc, char* argv[], char* env[])
{
  typedef boost::match_results<std::string::const_iterator> matches_t;
  typedef matches_t::const_reference match_t;
  boost::regex x("");
  const std::string str;
  matches_t what;
  boost::match_flag_type flags = boost::match_default;
  regex_search(str.begin(), str.end(), what, x, flags);
  return 0;
}

三个问题 - 字符串在std命名空间中,需要相应调出。其次,regex_search模板定义了一个const字符串的迭代器,因此以这种方式声明它。最后,regex_search不是boost命名空间的一部分  regex_seRAch中有一个拼写错误。以上编译并执行罚款1.53。