訪問來自boost :: match_results類的子匹配時遇到問題。 當我在調試器檢查程序,一個match_results :: m_subs數組包含正是我期望:boost :: regex,match_results :: operator [] - 神祕的「sub + = 2」行
- [0]是全場比賽。
- [1]此外還有子匹配。它們完全符合預期。
但是,當我嘗試使用operator []和從1開始的子匹配的索引來訪問子匹配時,我沒有得到我想要的。原因是隱藏在推動源:
const_reference operator[](int sub) const
{
if(m_is_singular && m_subs.empty())
raise_logic_error();
sub += 2; //< WTF?
if(sub < (int)m_subs.size() && (sub >= 0))
{
return m_subs[sub];
}
return m_null;
}
我完全對此感到困惑。文檔說,我只是使用[n]訪問第n個submatch,但是在代碼中,這個奇怪的偏移量到處都是。
請告訴我,我不是瘋了:)
經過增壓版本:1.54和1.53
Phew!我的理智得救了! 我知道「謝謝」意見應該避免,但認真,謝謝! –
不客氣 –