我试图从
std::vector
中删除空条目。这里是一个示例代码,但是有些地方出了问题。#include <iostream>
#include <string>
#include<vector>
#include <cctype>
int main()
{
std::vector<std::string> s1 = {"a"," ", "", "b","c"," ","d"};
for (auto it = s1.begin(); it != s1.end() && isspace(*it); )
{
it = s1.erase(it);
}
std::cout<<"vector size = "<<s1.size();
for (auto &i:s1)
std::cout<<i<<"\n";
}
我正在运行一个for
循环来查找空元素并将其删除。应该也有STL方法可以使用,但不确定它如何工作。
isspace()
函数期望一个int
类型参数(历史上是这样,但实际上是字符类型),但你提供了一个std::string
类型的参数,这是不兼容的。相反,你可以检查(*it == "" || *it == " ")
来达到相同的效果。 - Scheff's Catfor
循环只试图从vector
的开头删除“空”条目。一旦遇到单个非“空”条目,它就会停止。 - Algirdas Preidžiusstd::remove_if
。 - PaulMcKenzie