我正在尝试使用正则表达式在字符串中包含一个子字符串,但似乎收到以下错误:
//code
#include <regex>
#include <iostream>
using namespace std;
int main(){
string str1="hello \"trimthis\" please";
regex rgx("\"([^\"]*)\""); // will capture "trimthis"
regex_iterator current(str1.begin(), str1.end(), rgx);
regex_iterator end;
while (current != end)
cout << *current++;
return 0;
}
//错误 在&#39;当前&#39;之前缺少模板参数
在&#39;结束&#39;
之前缺少模板参数&#39;电流&#39;未在此范围内声明
我尝试做的事情是否有不同的语法因为我之前没有使用过正则表达式而且是c ++的新手
答案 0 :(得分:1)
regex_iterator
是一个类模板。您需要使用sregex_iterator
。
*current
评估为std::smatch
。将此类对象插入std::ostream
没有过载。你需要使用:
cout << current->str();
这是该程序的更新版本,对我有用。
//code
#include <regex>
#include <iostream>
using namespace std;
int main(){
string str1="hello \"trimthis\" please";
regex rgx("\"([^\"]*)\""); // will capture "trimthis"
sregex_iterator current(str1.begin(), str1.end(), rgx);
sregex_iterator end;
while (current != end)
{
cout << current->str() << endl; // Prints the entire match "trimthis"
cout << current->str(1) << endl; // Prints the group, trimthis
current++;
}
return 0;
}