stack class implementation to file unix-style in c++

#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;
}