Нужно написать программу для файла
Нужно написать программу, которая считывает строки с файла и записывает их в исходный файл в перевернутом виде и в обратном порядке. Я сделал, что строчки пишет задом наперед, но не знаю, как сделать так, чтобы порядок был обратным. Помогите)
Вот код:
#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();
