C++使用正则时碰到一个奇怪的问题

RT.

有这么一段代码:

Copy
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追加

Copy
line2.append(results.str());

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

posted @   姜小豆  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示