我有一个 std::vector
的 std::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/