使得C++ 的regex带来的一些问题,果然换掉,当然也可能是我自己还没会用。记录一下。
开发IDE是 VS2017,本以为使用c++ 11 regex 就行了,不需要弄boost。但会出现异常的现象。同样的代码使用c++ regex就会出问题,使用boost的regex就没什么问题了。
wstring contents = wstring(L"begin\r\n\r\r\n"
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
"ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"
"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssss end");
boost::wregex rg(wstring(L"begin(.|\\r|\\n|\\s)*end"));
boost::wcmatch wideMatch1;
if (boost::regex_search(contents.c_str(), wideMatch1, rg))
{
/*for (boost::wcmatch::iterator it; it != wideMatch1.end(); it++)
{
wstring subStr = *it;
OutputDebugString(subStr.c_str());
}*/
for (int i = 0; i < wideMatch1.size(); i++)
{
CString strTemp1 = wideMatch1[i].str().c_str();
OutputDebugString(strTemp1 + _T("\r"));
}
}
//使用c++ 11 regex 会崩溃
string contents2 = string("begin\r\n\r\r\n"
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
"eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
"ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"
"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssss end");
regex rg2(string("begin(.|\\r|\\n|\\s)*end"));
smatch wideMatch2;
regex_search(contents2, wideMatch2, rg2);
带上BOOST的安装使用参考:https://www.cnblogs.com/it-tsz/p/10739653.html