2016-09-28 29 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。