为什么在使用boost :: split时必须使用boost :: is_any_of?

时间:2017-09-02 11:14:08

标签: c++ boost

为什么在使用boost :: split?

时必须使用boost :: is_any_of

我使用时:boost::split(split_res, someStr, ".");

我收到错误。

1 个答案:

答案 0 :(得分:1)

  

为什么?

因为API是以这种方式设计的(例如,它允许动态谓词考虑像locale这样的事情)。

  

但我怎么知道?我有一个奇怪的错误

您可以阅读documentation。如果你错误地使用它,编译器的工作就是告诉你它。

  

对我来说这似乎太复杂了

不要使用它。使用您喜欢的更简单的界面将其包装在一个函数中。

<强> Live On Coliru

namespace my {
    template <typename R = std::vector<std::string> >
        R split(std::string const& input, char delim = '.') {
            R v;
            boost::split(v, input, boost::algorithm::is_any_of(std::array<char,1>{delim}));
            return v;
        }
}