相关疑难解决方法(0)

boost :: split在字符串的开头和结尾留下空标记 - 这是期望的行为吗?

由于我在文档中找不到任何内容,我想我在这里问.我有以下程序(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";
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

''
'tag'
'tag1'
'tag2'
'tag3'
'tag4'
''
Run Code Online (Sandbox Code Playgroud)

我原以为该token_compress_on选项会删除所有空标记.例如,解决方案是使用boost::trim_if.不过我想知道这是否是boost :: split的理想行为,以及为什么会这样?

(g ++ 4.6.3,提升1.48)

c++ boost split c++11

10
推荐指数
2
解决办法
5651
查看次数

标签 统计

boost ×1

c++ ×1

c++11 ×1

split ×1