2016-09-28 54 views
0

我遇到了一些問題,搞清楚boost庫string_ref find函數做了什麼。我寫了下面的程序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 
} 

我不明白,爲什麼要找給我我的模式的最後一個實例和find_last_of甚至沒有意義了!有人能給我一些幫助嗎?

回答

3

docs

Boost.StringRef是傑弗裏Yaskin的N3442的實現:string_ref:一個非所屬參照爲字符串。

string_ref沒有任何東西,只是指它。所以,當你寫:

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

該臨時string得到在該行的結束時被銷燬,現在你有一個懸空的參考。其他一切都是UB。