如何创建和操作ifstreams向量?就像这样,但是这个不起作用:
vector<ifstream> Files(10, ifstream()); Files[0].open("File");
ojsjcaue1#
不能将ifstream存储在std::vector中,因为不能创建它们的副本。你可以通过存储指针来完成类似的事情,在这种情况下,我建议你使用某种指针容器来确保那些ifstream被删除。
ifstream
std::vector
omhiaaxx2#
我能想到的最接近的是vector<shared_ptr<ifstream> >-你不能把ifstream放在向量中,因为它们是不可复制构造的。
vector<shared_ptr<ifstream> >
3npbholx3#
从C++11开始,您可以使用emplace_back:
emplace_back
vector<ifstream> Files; Files.emplace_back("File1"); // ... // Use the files here... // Close them afterwards: for (auto &file : Files) file.close();
3条答案
按热度按时间ojsjcaue1#
不能将
ifstream
存储在std::vector
中,因为不能创建它们的副本。你可以通过存储指针来完成类似的事情,在这种情况下,我建议你使用某种指针容器来确保那些ifstream被删除。
omhiaaxx2#
我能想到的最接近的是
vector<shared_ptr<ifstream> >
-你不能把ifstream
放在向量中,因为它们是不可复制构造的。3npbholx3#
从C++11开始,您可以使用
emplace_back
: