在Ubuntu上使用正则表达式的错误

时间:2015-03-13 18:51:58

标签: c++ regex ubuntu boost

我在Qt平台上使用Ubuntu上的正则表达式时遇到了问题(我也尝试过Code :: Blocks)。我正在编写控制台应用程序代码,我必须使用正则表达式。

当我输入#include <regex>时,我发现错误(我认为这是最重要的错误,但正则表达式有很多错误):

/usr/include/c++/4.9/bits/c++0x_warning.h:32: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support for the \
  ^

我认为我应该使用Boost库。我安装了Boost:

sudo apt-get install libboost-all-dev

并输入(我编辑了一些东西,开头写了boost::):

#include <boost/regex.hpp>

但不幸的是,它造成了很多错误,就像那样:

In function `bool boost::regex_search<__gnu_cxx::__normal_iterator<char const*, std::string>, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(__gnu_cxx::__normal_iterator<char const*, std::string>, __gnu_cxx::__normal_iterator<char const*, std::string>, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)':

我真的很困惑我应该做些什么。

1 个答案:

答案 0 :(得分:1)

您未包含<boost/regex.hpp>生成的错误消息。关于标准库提供的正则表达式标头,错误消息说明了一切:您必须至少使用C ++ 11才能访问该标头。 E.g:

g++ -std=c++11 -Wall -Wextra -Werror foobar.cpp