boost :: split deixa tokens vazios no início e no final da string - esse comportamento é desejado?
Desde que eu não consegui encontrar nada sobre isso nodocumentação, Eu pensei em perguntar aqui. Eu tenho o seguinte programa (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>
A saída é:
<code>'' 'tag' 'tag1' 'tag2' 'tag3' 'tag4' '' </code>
Eu teria pensado que otoken_compress_on
opção remove todos os tokens vazios. A solução é, por exemplo, usarboost::trim_if
. No entanto, eu queria saber se esse é o comportamento desejado de boost :: split e por que isso está acontecendo?
(g ++ 4.6.3, aumento 1.48)