-2

我有某种类型的 std::list,例如list<FILE>. 我需要 for-each 访问存储在其中的所有值,例如:

    list<FILE>::iterator iter;

    for(iter = Preferences::OpenFD.begin(); iter != Preferences::OpenFD.end(); iter++)
    {
        fclose(iter);
    }

这不起作用,因为 iter 不是文件。我怎样才能达到这个迭代器指向的值?

4

2 回答 2

2

只需使用取消引用运算符:

fclose(*iter);
//     ^

另请注意,fclose期望 a FILE*,而不是FILE

使用 C++11,您可以使用基于范围的:

for(auto& elem: Preferences::OpenFD)
    fclose(elem);

或者你也可以使用std::for_each

std::for_each(Preferences::OpenFD.begin(), Preferences::OpenFD.end(), fclose);
于 2013-06-22T16:50:45.220 回答
0

您需要取消引用迭代器才能访问该FILE对象:

fclose(*it);
于 2013-06-22T16:50:07.593 回答