#include <iostream>
#include <regex>
#include <string>
int main()
{
std::string example{" <match1> <match2> <match3>"};
std::regex re{"<([^>]+)>"};
std::regex_token_iterator<std::string::iterator> it{example.begin(), example.end(), re, 1};
decltype(it) end{};
while (it != end) std::cout << *it++ << std::endl;
return 0;
}
两个站点都使用了GCC 4.9.2。我不知道ideone使用什么编译参数,但Coliru没有什么不寻常的。
Coliru没有给我match1
结果:
Coliru
# g++ -v 2>&1 | grep version; \
# g++ -std=c++14 -O2 -Wall -pedantic -pthread main.cpp && ./a.out
gcc version 4.9.2 (GCC)
match2
match3
ideone (顺便提一下,还有Coliru's clang 3.5.0 using libc++)
match1
match2
match3
我的代码是否有未定义的行为或什么?是什么导致了这种情况?
https://stackoverflow.com/questions/29750835
复制相似问题