当文本以分隔符

时间:2017-08-23 16:00:43

标签: c++ c++11 boost

我想拆分字符串" / 1/2/3/4"四部分,即1,2,3,4。我正在使用boost来分割字符串

#include <boost/algorithm/string.hpp>
#include <vector>
#include <string>

int main(int argc, char** argv) {

        std::vector<std::string> v;
        //boost::split(v, argv[1], boost::is_any_of("/"));
        boost::split(v, argv[1], [](char c){return c == '/';});
        for( auto i : v )
                std::cout << i << ' ';
        std::cout << std::endl;

        std::cout << v.size() << std::endl;

        return 0;

}

当我跑步时,我在我的向量中加了一个空字

[oracle@localhost split]$ ./a.out /1/2/3/4
 1 2 3 4 
5

由于我的单词(/ 1/2/3/4)以分隔符开头。我该如何解决这个问题?我希望矢量只能容纳1,2,3,4。

1 个答案:

答案 0 :(得分:3)

要扔掉第一个角色:

boost::split(v, argv[1] + 1, [](char c){return c == '/';});

但请记住,此时strlen的{​​{1}}为argv[1]