我有一个程序可以读取作业列表并删除“坏”"分配,然后写入新文件。我删除错误分配的功能正常工作。我目前用于读取文本文件的代码也可以正常工作,但是使用while循环执行此操作。如何在没有while循环的情况下利用std :: list库来完成同样的事情。下面是我用来删除坏的assignmemnts(Prune)以及读取文本文件的代码。
void Prune()
{
m_Assignments.remove_if([](const Assignment& assignment){ return !assignment.IsGood();});
}
void Read(std::istream& is)
{
std::string s;
std::getline(is, s);
m_Name = s;
Assignment a;
while (is >> a)
{
m_Assignments.push_back(a);
}
}
答案 0 :(得分:1)
您可以使用std::istream_iterator
和std::back_inserter
将输入流中的字符串(使用std::copy
)复制到列表中:
std::copy (
std::istream_iterator<std::string>{is},
std::istream_iterator<std::string>{},
std::back_inserter(a)
);