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<

当有这么一句 line.append(results.str());,在for循环中使用 results[i]则会报错:

开始以为是results.str()的问题,最后发现是line的问题。
比如是给Line2追加

line2.append(results.str());

就不会报错。看来是在获取子序列前不能修改原字符串。更深层的原因还不清楚。