c++ - 修剪字符串 vector

标签 c++ string vector

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

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

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

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

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

附言我是 C++ 菜鸟。

编辑

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

最佳答案

这个怎么样,有一个谓词:

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() 调用中可能存在差错,但总体思路应该可行。

关于c++ - 修剪字符串 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4642339/

相关文章:

c++ - 使用 decltype/SFINAE 检测运算符(operator)支持

c - 如何使用单词 'int' ,但作为字符串而不是 C 中的数据类型?

c++ - 有一个 PCWSTR 并需要它成为一个 WCHAR[]

c++ - 使用 C++ 将对象读写到二进制文件中?

c++ - 对指针 vector 进行排序

c++ - 内联静态数据的初始化

c++ - 视频处理指南

Python 压缩字符串不太正确

java - vector 、点、战舰、2D

vector - 可以从迭代器中收集 &mut 吗?