boost :: split pozostawia puste tokeny na początku i na końcu łańcucha - czy jest to pożądane zachowanie?
Ponieważ nie mogłem znaleźć niczego na ten temat wdokumentacja, Myślałem, że o to pytam. Mam następujący program (C ++ 11):
<code>#include <iostream> #include <boost/algorithm/string.hpp> using namespace std; using namespace boost; int main () { string tmp = " #tag #tag1#tag2 #tag3 ####tag4 "; list<iterator_range<string::iterator> > matches; split( matches, tmp, is_any_of("\t #"), token_compress_on ); for( auto match: matches ) { cout << "'" << match << "'\n"; } } </code>
Dane wyjściowe to:
<code>'' 'tag' 'tag1' 'tag2' 'tag3' 'tag4' '' </code>
Myślałem, żetoken_compress_on
opcja usuwa wszystkie puste tokeny. Rozwiązaniem jest na przykład użycieboost::trim_if
. Niemniej jednak zastanawiałem się, czy jest to pożądane zachowanie boost :: split i dlaczego tak się dzieje?
(g ++ 4.6.3, boost 1.48)