c – 修剪字符串向量

我有一个std :: vector的std :: strings包含与此类似的数据:

[0] = ""
[1] = "Abc"
[2] = "Def"
[3] = ""
[4] = "Ghi"
[5] = ""
[6] = ""

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

[0] = "Abc"
[1] = "Def"
[2] = ""
[3] = "Ghi"

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

附:我是C菜鸟.

编辑

另外,我应该提到矢量可以完全由空白字符串组成,在这种情况下,0大小的矢量将是期望的结果.

最佳答案 怎么样,用谓词:

class StringNotEmpty
{
  bool operator()(const std::string& s) { return !s.empty(); }
};

现在修剪:

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()));

.base()调用可能有一个一个接一个,但一般的想法应该有效.

点赞