使用std :: list c ++将文本文件读入列表而不使用直接循环

时间:2018-02-03 04:52:45

标签: c++ list loops iterator

我有一个程序可以读取作业列表并删除“坏”"分配,然后写入新文件。我删除错误分配的功能正常工作。我目前用于读取文本文件的代码也可以正常工作,但是使用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);
    }

}

1 个答案:

答案 0 :(得分:1)

您可以使用std::istream_iteratorstd::back_inserter将输入流中的字符串(使用std::copy)复制到列表中:

std::copy (
    std::istream_iterator<std::string>{is}, 
    std::istream_iterator<std::string>{}, 
    std::back_inserter(a)
);