我正在使用带有方言选项-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
答案 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