C++ 为什么这两个sregx_迭代器语句之间存在差异?

C++ 为什么这两个sregx_迭代器语句之间存在差异?,c++,regex,C++,Regex,这是第一句话: string s("hello.world"); sregex_iterator pos(s.cbegin(), s.cend(), regex(R"(\.)")); sregex_iterator end; for (; pos != end; ++pos) cout << pos->str() << endl; string s("hello.world"); regex reg(R"(\.)"); sregex_iterator

这是第一句话:

string s("hello.world");
sregex_iterator  pos(s.cbegin(), s.cend(), regex(R"(\.)"));
sregex_iterator end;
for (; pos != end; ++pos)
    cout << pos->str() << endl;
string s("hello.world");
regex reg(R"(\.)");
sregex_iterator  pos(s.cbegin(), s.cend(), reg);
sregex_iterator end;
for (; pos != end; ++pos)
    cout << pos->str() << endl;
字符串s(“hello.world”);
sregex_迭代器位置(s.cbegin()、s.cend()、regex(R“(\”)));
sregex_迭代器端;
对于(;pos!=end;++pos)
cout str()在这行中:

sregex_iterator  pos(s.cbegin(), s.cend(), regex(R"(\.)"));
表达式
regex(R“(\”)
对应于函数调用后立即销毁的临时对象。所有指向它的迭代器都将失效。尝试使用此迭代器会导致调试运行时检查失败,并引发断言

见:


错误消息会这样说。迭代器已被孤立。@LightnessRacesinOrbit可怜的小迭代器:(