2016-09-28 8 views
0

私はブーストライブラリのstring_ref find関数が何をしているかを理解する際にいくつかの問題を抱えています。私は私が見つけることが私に私のパターンとfind_last_ofの最後の出現を与える理由は、まったく意味がありません理解していない次のプログラムBoost :: string_refアルゴリズムを見つける

int main(int argc, char **argv) { 
    boost::string_ref ref = string("<a>\n1234567\n</a>\n<a>"); 
    cout << ref.find_first_of("<a>") << endl; // output 12 
    cout << ref.find("<a>") << endl; // output 17 
} 

を書きました!誰かが私に助けを与えることができますか? docsから

答えて

3

:string_ref:文字列に非所有する参照

Boost.StringRefはジェフリーYaskinのN3442の実装があります。

は何も所有していません。ただそれを参照してください。だから、あなたが書くとき:

boost::string_ref ref = string("<a>\n1234567\n</a>\n<a>"); 

一時的stringは、行の最後に破壊されますと、今あなたが宙ぶらりんの参照を持っていること。それ以外はUBです。

関連する問題