1

Boostを使用して文字列をトークンに分割するコードがあります。

boost::algorithm::iter_split(
  result_vector, input, boost::algorithm::first_finder(delimiter));

結果に空のトークンが含まれないようにこれを変更するための最良かつ最もエレガントな方法は何ですか?

たとえば、私の入力は次のようになります。

foo.bar.baz.

.区切り文字はどこですか。

4

1 に答える 1

2

string をテストするラムダ関数を使用して、結果のベクトルに remove_if を使用するだけです。

auto newEndIt = std::remove_if(result_vector.begin(), result_vector.end(), [&](const std::string& it)->bool
{
    return it.empty();
});

次に、ベクトルのサイズを変更します

result_vector.resize(newEndIt - result_vector.begin());
于 2012-08-06T04:48:57.120 に答える