boost :: split hinterlässt am Anfang und am Ende der Zeichenfolge leere Token. Ist dies das gewünschte Verhalten?

Da konnte ich im Internet nichts dazu findenDokumentationIch dachte, ich frage es hier. Ich habe folgendes Programm (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>

Die Ausgabe ist:

<code>''
'tag'
'tag1'
'tag2'
'tag3'
'tag4'
''
</code>

Ich hätte gedacht, dass dietoken_compress_on Option entfernt alle leeren Token. Die Lösung ist zum Beispiel zu verwendenboost::trim_if. Trotzdem habe ich mich gefragt, ob dies das gewünschte Verhalten von boost :: split ist und warum dies geschieht.

(g ++ 4.6.3, Boost 1,48)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage