修剪字符串向量

dre*_*lax 6 c++ string vector

我有一个std::vectorstd::strings含有类似这样的数据:

[0] = ""
[1] = "Abc"
[2] = "Def"
[3] = ""
[4] = "Ghi"
[5] = ""
[6] = ""
Run Code Online (Sandbox Code Playgroud)

如何获得包含从 1 到 4 的 4 个字符串的向量?(即我想从向量的开头和结尾修剪所有空白字符串):

[0] = "Abc"
[1] = "Def"
[2] = ""
[3] = "Ghi"
Run Code Online (Sandbox Code Playgroud)

目前,我正在使用一个正向迭代器来让我的方式"Abc"和反向迭代器让我的方式回到我的方式"Ghi",然后使用这些迭代器构建一个新的向量。这种方法有效,但我想知道是否有更简单的方法来修剪这些元素。

PS我是一个C++菜鸟。

编辑

另外,我应该提到向量可能完全由空白字符串组成,在这种情况下,0 大小的向量将是所需的结果。

ltj*_*jax 3

怎么样,用一个谓词:

class StringNotEmpty
{
  bool operator()(const std::string& s) { return !s.empty(); }
};
Run Code Online (Sandbox Code Playgroud)

现在要修剪:

vec.erase(std::find_if(vec.rbegin(), vec.rend(), StringNotEmpty()).base(), vec.end());
vec.erase(vec.begin(), std::find_if(vec.begin(), vec.end(), StringNotEmpty()));
Run Code Online (Sandbox Code Playgroud)

通话中可能会有一分之差.base(),但总体思路应该可行。