Reputation: 640
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?
Upvotes: 3
Views: 17249
Reputation: 347
Simply just add
g++ -std=gnu++0x <filename.cpp>
or
g++ -std=c++0x <filename.cpp>
It will work properly
Upvotes: 2
Reputation: 6583
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.
Upvotes: 2
Reputation: 121971
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.
Upvotes: 6