Нужно написать программу для файла

Нужно написать программу, которая считывает строки с файла и записывает их в исходный файл в перевернутом виде и в обратном порядке. Я сделал, что строчки пишет задом наперед, но не знаю, как сделать так, чтобы порядок был обратным. Помогите)

Вот код:

#include <fstream>
#include <string>
#include <algorithm>
#include <cstdlib>
using namespace std;

int main()
{
    ifstream f("f.txt");
    ofstream g("g.txt");
    string s;
    char c;
    while (getline(f, s))
    {
        reverse(s.begin(), s.end());
        g << s << endl;
    }
    g.close();
    f.close();

    system("pause");
}

Ответы (2 шт):

Автор решения: Fameek

Этот код можно использовать как пример. По большей степени это аналог работы с векторами так что думаю ни чего сложного

#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;

int main()
{
    ifstream f("f.txt");
    ofstream g("g.txt");
    string s;

    while (f)
    {
        string s;
        getline(f, s);
        string end;
        if (s.size() != 0) {
            for (int i = s.size() - 1; i >= 0; i--) { // начинаем отсчет с конца 
                end.push_back(s[i]); // как и в векторах в строках есть функция push_back()

            }
        }
        g << end << '\n';

    }
    g.close();
    f.close();

    system("pause");
}

Результат работы я полагаю соответствует заданию
Результаты

→ Ссылка
Автор решения: AR Hovsepyan

Предлагаю вариант, где стандартные алгоритмы не нужны. Достаточно включать следующие файлы:

#include <iostream>
#include <fstream>
#include <string>
#include <stack>

Строки в перевернутом виде складываем в стек, а потом оттуда записываем в файл, вытаскивая из стека(последняя будет первой), пока стек не пустой:

ifstream f("f.txt");
ofstream g("g.txt");
std::stack<string>  ss;      
string s;
while (getline(f, s))
{
    ss.push(string(s.rbegin(), s.rend()));
}
while (!ss.empty()) {
    g << ss.top();
    ss.pop();
}

g.close();
f.close();
→ Ссылка