由于gcc 4.8.2不支持C++11的regex库,故需升到4.9.2
首先加载源,导入rpm #centos6系列
wget https://www.softwarecollections.org/repos/rhscl/devtoolset-3/epel-6-x86_64/noarch/rhscl-devtoolset-3-epel-6-x86_64-1-2.noarch.rpm
rpm -ivh rhscl-devtoolset-3-epel-6-x86_64-1-2.noarch.rpm
#centos7系统
wget https://www.softwarecollections.org/repos/rhscl/devtoolset-3/epel-7-x86_64/noarch/rhscl-devtoolset-3-epel-7-x86_64-1-2.noarch.rpm
rpm -ivh rhscl-devtoolset-3-epel-7-x86_64-1-2.noarch.rpm
接下来开始下载安装
yum install devtoolset-3-toolchain
安装完毕后可通过
scl enable devtoolset-3 bash
启用开发环境 通过gcc -v确认
简单的测试例子
#include <string>
#include <regex>
#include <stdio.h>
int main() {
std::string r("(0x[\\dA-Fa-f]+)");
std::regex pattern(r);
std::match_results<std::string::const_iterator> result;
std::string source = "0x123fd";
bool valid = std::regex_match(source, result, pattern);
if (!valid) {
printf("no vaild");
return 0;
}
printf("match result is %s", result[1].str().c_str());
return 0;
}
保存成test.cpp 生成
g++ -o test test.cpp -std=c++11
运行
./test
打印出
match result is 0x123fd
可正常运行C++11的正则库