我正在尝试学习如何在c ++ 11中使用正则表达式库。 在ubuntu 13.10上,我试图从cplusplus.com编译以下示例:
// regex_replace example
#include <iostream>
#include <string>
#include <regex>
#include <iterator>
int main ()
{
std::string s ("there is a subsequence in the string\n");
std::regex e ("\\b(sub)([^ ]*)"); // matches words beginning by "sub"
// using string/c-string (3) version:
std::cout << std::regex_replace (s,e,"sub-$2");
// using range/c-string (6) version:
std::string result;
std::regex_replace (std::back_inserter(result), s.begin(), s.end(), e, "$2");
std::cout << result;
// with flags:
std::cout << std::regex_replace (s,e,"$1 and $2",std::regex_constants::format_no_copy);
std::cout << std::endl;
return 0;
}
使用命令:
$ g++ -std=c++11 -o file file.cc
我得到以下输出:
file.cc:13:48: error: no matching function for call to ‘regex_replace(std::string&, std::regex&, const char [7])’
我做错了什么?!头上没有多少头发...... 提前致谢
答案 0 :(得分:4)
<强> You need to update your compiler from GCC 4.8 to GCC 4.9. 强>
不幸的是,GCC 4.9还没有发布,但是如果你迫切需要这个功能,那么它的稳定性足以与trunk构建一起使用。
或者,给Clang或Boost.Regex一个。