boost ::split оставляет пустые токены в начале и конце строки -это желаемое поведение?

Так как я не смог найти ничего по этому поводу в документация , я думал спросить здесь. У меня есть следующая программа (C++11):

#include  
#include 

using namespace std;
using namespace boost;

int main () {
    string tmp = " #tag #tag1#tag2  #tag3 ####tag4   ";
    list > matches;
    split( matches, tmp, is_any_of("\t #"), token_compress_on );

    for( auto match: matches ) {
            cout << "'" << match << "'\n";
    }
}

Вывод:

''
'tag'
'tag1'
'tag2'
'tag3'
'tag4'
''

Я бы подумал, что опция token_compress_onудаляет все пустые токены. Решение состоит, например, в использовании boost::trim_if. Тем не менее мне было интересно, является ли это желаемым поведением разделения boost ::и почему это происходит?

(g++ 4.6.3, boost 1.48)

10
задан fdlm 3 May 2012 в 18:38
поделиться