#include <iostream>
#include <fstream>
#include <stack>
class StackToFile {
public:
StackToFile(const std::string& filename);
~StackToFile();
void push(int value);
void pop();
int top() const;
bool isEmpty() const;
void printToFile();
private:
std::stack<int> internalStack;
std::string filename;
std::ofstream outputFile;
};
StackToFile::StackToFile(const std::string& filename) : filename(filename) {
outputFile.open(filename);
}
StackToFile::~StackToFile() {
outputFile.close();
}
void StackToFile::push(int value) {
internalStack.push(value);
}
void StackToFile::pop() {
if (!internalStack.empty()) {
internalStack.pop();
}
}
int StackToFile::top() const {
if (!internalStack.empty()) {
return internalStack.top();
}
return -1; // Assuming -1 represents an empty stack or an invalid value
}
bool StackToFile::isEmpty() const {
return internalStack.empty();
}
void StackToFile::printToFile() {
if (outputFile.is_open()) {
std::stack<int> tempStack = internalStack;
while (!tempStack.empty()) {
outputFile << tempStack.top() << " ";
tempStack.pop();
}
}
}
int main() {
StackToFile stackToFile("stack_output.txt");
stackToFile.push(5);
stackToFile.push(10);
stackToFile.push(15);
stackToFile.printToFile();
stackToFile.pop();
stackToFile.printToFile();
return 0;
}