Почему g ++ не видит функцию boost :: regex_search ()?

Я пытаюсь скомпилировать библиотеку boost :: regex, но как только я пытаюсь использовать функцию regex_search (), она вызывает:

$ 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. Версия g ++ 4.5.3 под Cygwin. Буст-версия 1.53. Если я закомментирую строку regex_search, она скомпилируется нормально. Идеи?

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.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector