Regex in C++: Requires compiler support error
Solution 1
and must be enabled with the -std=c++0x or -std=gnu++0x compiler options
Add one of those options, -std=c++0x
or -std=gnu++0x
, to your compiler command:
g++ -std=c++0x ...
Note if std::regex
is not supported see boost::regex
for an alternative.
Solution 2
Simply just add
g++ -std=gnu++0x <filename.cpp>
or
g++ -std=c++0x <filename.cpp>
It will work properly
Solution 3
It looks like you are trying to use the regex class, which is part of the new C++11 standard, but not telling the compiler to compile to that standard.
Add -std=c++0x to your compiler flags and try again.
EDIT : As the gcc implementation status page shows, the regex support in gcc is far from complete. So even adding the right flag wont help yet. If you need regex support, you could try boost.
Enigman
Updated on June 04, 2022Comments
-
Enigman almost 2 years
I'm trying to use
regex
in C++. The following is my code:#include<iostream> #include<stdlib.h> #include<string.h> #include<regex> using namespace std; int main(int argc, char** argv) { string A = "Hello!"; regex pattern = "(H)(.*)"; if (regex_match(A, pattern)) { cout << "It worked!"; } return 0; }
But I'm encountering this error :
In file included from /usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/regex:35:0, from main.cpp:12: /usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/bits/c++0x_warning.h:31:2: error: #error This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.
How can this be solved and what is wrong?
-
UmNyobe over 11 yearswell the fix is already specified in the error itself...
-
ZhangChn over 11 yearsPerhaps dup to stackoverflow.com/questions/4716680/c0x-regex-in-gcc
-
-
Enigman over 11 yearsHow exactly do I do that? Thanks!
-
Enigman over 11 yearsHow do I add it to my 'compiler flags?' I'm using NetBeans. Is there an option here that lets me do that?
-
Enigman over 11 yearsOh. I'm not using the terminal to compile and run my code. I'm using netbeans.
-
hmjd over 11 years@Enigman, I don't use NetBeans. Google for how to add compiler options in NetBeans or search the NetBeans manual should provide you with a solution.
-
Enigman over 11 yearsYeah. I shouldn't have asked that here! Sorry. Will do that.
-
Tom Macdonald over 11 yearsproject properties -> Build -> C++ Compiler -> Additional Options I believe.
-
Enigman over 11 yearsI've done that. Still there seems to be error. :( I tried the code given at cplusplus.com/reference/regex/regex_match too.
-
Tom Macdonald over 11 yearsSee my edit. Regex support in the gcc C++11 implementation is not complete.
-
Pete Becker over 11 years@Enigman - don't bother. GCC's implementation of regular expressions is unusable.