我有一個緩衝區(例如char buffer[1024]
),它被填充一些數據。現在我想在這個緩衝區中搜索一個子字符串。由於它應該是一個不區分大小寫的搜索,我正在使用boost::algorithm::ifind_first
。Boost find_first它是如何工作的? /定義一個範圍
因此,我調用該函數是這樣的:
boost::iterator_range<char*> buf_iterator;
buf_iterator = boost::algorithm::ifind_first(buffer ,"substring");
這其實工作正常。但我的關注如下:
我通過函數只是char pointer
,所以ifind_first
應該不知道我的緩衝區結束,但它仍然工作壽。
現在我的第一個想法是,該函數搜索,直到字符串終止字符。但在Boost Documentation函數的定義如下:
template<typename Range1T, typename Range2T>
iterator_range< typename range_iterator<Range1T>::type >
find_first(Range1T & Input, const Range2T & Search);
因爲它與模板參數的工作原理其實我懷疑它正在與空終止?
所以我的問題是如何ifind_first
知道在哪裏停止?或者更確切地說,我怎麼給它一個範圍?正如已經提到過的,它可以很好地工作,但是我不確定我是不是很幸運 - 我的意思是在最壞的情況下函數被調用,並且不知道停止和進入未定義內存的位置。 。
編輯:
現在在回答中有提到,這取決於我傳遞給函數的類型。現在這意味着如果我使用一個char
緩衝區,我必須始終確保它是0終止的......?
如果文檔聲明瞭方法,它會很好地隱藏! – CapelliC 2012-02-20 14:25:55
請不要在你的帖子上簽名。 – 2012-02-20 15:09:30