为什么我得到两个不同的结果,而使用sregex_iterator与regex变量模式vs构造模式

Why do I get two different results while using sregex_iterator with a regex variable pattern vs a constructed pattern

本文关键字:模式 iterator sregex regex vs 变量 结果 两个 为什么      更新时间:2023-10-16

如果我在应用程序中输入"110110" in,则第一个块输出"1",而第二个块输出"2"。

为什么结果不同?

如何在函数调用中构建正则表达式模式?

#include <bits/stdc++.h>
using namespace std;
int main() {
    string s;
    cin >> s;
    auto begin = sregex_iterator(s.begin(),s.end(),regex{R"(110)"});
    auto end = sregex_iterator();
    cout << distance(begin,end) << endl;
    const regex r(R"(110)");
    begin = sregex_iterator(s.begin(),s.end(),r);
    end = sregex_iterator();
    cout << distance(begin,end) << endl;
}

c++ 14通过删除构造函数修复了接口:

regex_iterator(BidirIt, BidirIt,
               const regex_type&&,
               std::regex_constants::match_flag_type) = delete;