Я предполагаю, что вы хотите хранить текст в файлах в вашем стеке, а не в реальных объектах fstream? Если это так, будет проще хранить содержимое файлов в виде строк.
#include <iostream>
#include <stack>
#include <fstream>
#include <sstream>
int main()
{
std::stack <std::string> webpages;
for(const auto& file : {"web1.txt", "web2.txt", "web3.txt"}) {
std::fstream page(file);
std::stringstream ss;
ss << page.rdbuf();
webpages.emplace(ss.str());
}
std::cout << webpages.size() << "\n"; // will print "3"
std::cout << "-- pages read --\n";
for(;!webpages.empty(); webpages.pop()) {
std::cout << webpages.top() << "\n";
}
}
Редактировать: Как уже указывалось, вы действительно хотите открыть некоторые файлы для записи, так что вот версия для этого.
#include <stack>
#include <fstream>
int main()
{
std::stack<std::fstream> webpages;
for(const auto& file : {"web1.txt", "web2.txt", "web3.txt"}) {
webpages.emplace(file, std::fstream::out);
}
for(;!webpages.empty(); webpages.pop()) {
webpages.top() << "some text\n";
}
return 0;
}