C++使用正则时碰到一个奇怪的问题
RT.
有这么一段代码:
string line, line2;
std::smatch results;
std::regex rStepSendStart("(^ *xxxxxx |^ccccc)(.*)", std::regex_constants::icase);
while(getline(inFile, line)){
if(regex_match(line, results, rStepSendStart)){
line.append(results.str()); // ???
for (size_t i = 0; i < results.size(); ++i) {
PLOGD<<i<<(string)results[i];
}
}
...
}
当有这么一句 line.append(results.str());
,在for循环中使用 results[i]则会报错:
开始以为是results.str()的问题,最后发现是line的问题。
比如是给Line2追加
line2.append(results.str());
就不会报错。看来是在获取子序列前不能修改原字符串。更深层的原因还不清楚。