由于我在
documentation年找不到任何东西,所以我以为我在这里问.我有以下程序(C 11):
#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"; } }
输出为:
'' 'tag' 'tag1' 'tag2' 'tag3' 'tag4' ''
我会认为token_compress_on选项删除所有空的令牌.
例如,解决方案是使用boost :: trim_if.然而,我想知道这是否是boost :: split所需的行为,为什么会发生这种情况?
(g 4.6.3,升压1.48)