2017-09-02 15 views
2

なぜboost :: is_any_ofを使うべきですか?なぜboost :: is_any_ofをboost :: splitを使用する必要がありますか?

私が使用:boost::split(split_res, someStr, ".");

を私はエラーを取得します。

+3

[ツアー]を読み、[MCVE] 3番目のパラメータは、 '後押しpredicatあるよう –

+0

に見える::スプリット(split_res、someStrを、[]を提供するために時間がかかるしてください(char ch){return ch == '。';}); ' –

答えて

1

なぜですか?

APIはそのように設計されているため(たとえば、ロケールのようなものを考慮に入れた動的な述語を使用できるため)。

しかし、どうすればわかりますか?私は奇妙なエラーを持っています

あなたは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; 
     } 
} 
+0

は、ラッパー関数を示すサンプルを追加しました。http://coliru.stacked-crooked.com/a/f4bf196fdf58988d – sehe

+0

ややシンプルで:boost :: split(v、input、[delim](char c){return delim == c;}); ' – zett42

+0

@ zett42私は、しかし、あなたは少なくともいくつかの設定で正しいです:http://coliru.stacked-crooked.com/a/ca90a86f057c2233とhttp://coliru.stacked-crooked.com/a/1a1ace3196277df2 – sehe

関連する問題