G ++ - 5 tr1 / regex regex_replace无法解析

时间:2016-05-28 10:08:39

标签: c++ regex eclipse c++11 eclipse-cdt

我正在使用带有方言选项-std=c++0x的G ++ - 5和预处理器符号__GXX_EXPERIMENTAL_CXX0X__,我正在尝试使用tr1/regex

我使用#include <tr1/regex>using namespace std::tr1;regex reg("<[^>]*>");没有错误。 只有当我之后使用regex_replace(line, reg, "");时,我才会收到以下错误输出:

Function 'regex_replace' could not be resolved  test.cpp    /cppUni/src line 72 Semantic Error

Invalid arguments '
Candidates are:
#0 regex_replace(#0, #1, #1, const std::tr1::basic_regex<#3,#2> &, const ? &, std::bitset<unsigned long int11>)
? regex_replace(const ? &, const std::tr1::basic_regex<#1,#0> &, const ? &, std::bitset<unsigned long int11>)
'   test.cpp    /cppUni/src line 72 Semantic Error

我确认,line是一个字符串。

我在过去几个小时内搜索了一个解决方案,只能找到涉及我尝试的解决方案。 很遗憾,我无法使用boost/regex包。

这个问题有解决方案吗?

编辑:

#include <tr1/regex>
#include <iostream>
#include <string>

using namespace std;

int main(){
  std::tr1::regex reg("<[^>]*>");  
  string line = "<Day>22</Day>";

  if(line.find("<Day>") != string::npos)
    {
        line =std::tr1::regex_replace(line, reg, "");
        cout<<line<<endl;
    }
  return 0;
}

g++-5 -std=c++11 -D__GXX_EXPERIMENTAL_CXX0X__ -Wall test.cpp -o test.out

1 个答案:

答案 0 :(得分:0)

要回答这个问题: 用户“Baum mit Augen”通过说:

解决了这个问题
  

好吧,在tr1 :: regex中你显然需要std :: tr1 :: regex_replace(line,reg,string(“”));. (虽然这导致了Wandbox中的链接器错误,但也许他们只是没有安装遗留的东西,我不知道。)你应该只使用来自C ++ 11的std :: regex,它工作正常,如上所示。 - Baum mit Augen 5月28日11:10