std :: regex_replace不会少于6个参数

时间:2014-02-18 15:53:27

标签: c++ regex linux c++11 std

我正在尝试学习如何在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])’

我做错了什么?!头上没有多少头发...... 提前致谢

1 个答案:

答案 0 :(得分:4)

<强> You need to update your compiler from GCC 4.8 to GCC 4.9.

不幸的是,GCC 4.9还没有发布,但是如果你迫切需要这个功能,那么它的稳定性足以与trunk构建一起使用。

或者,给Clang或Boost.Regex一个。