我有一个某种类型的std :: list,例如list<FILE>
。我需要for-each访问存储在其中的所有值,例如:
list<FILE>::iterator iter;
for(iter = Preferences::OpenFD.begin(); iter != Preferences::OpenFD.end(); iter++)
{
fclose(iter);
}
这不起作用,因为它不是文件。我怎样才能达到这个指向的价值?
答案 0 :(得分:2)
只需使用取消引用运算符:
fclose(*iter);
// ^
另请注意,fclose
需要FILE*
,而不是FILE
。
使用C ++ 11,您可以使用基于范围的:
for(auto& elem: Preferences::OpenFD)
fclose(elem);
或者你也可以使用std::for_each
:
std::for_each(Preferences::OpenFD.begin(), Preferences::OpenFD.end(), fclose);
答案 1 :(得分:0)
您需要取消引用迭代器才能访问FILE
对象:
fclose(*it);