Мне нужно изменить порядок файла и вывести в другой файл. Например,
Вход:
hello
this is a testing file again
just so much fun
Ожидаемый результат:
just so much fun
this is a testing file again
hello
Это мой текущий код, он напечатан там, где он меняет порядок строк, а также порядок символов каждого слова.
Текущий:
nuf hcum os tsuj
niaga elif gnitset a si siht
olleh
int print_rev(string filename, char c){
ifstream inStream (filename);
ofstream outStream;
inStream.seekg(0,inStream.end);
int size = inStream.tellg();
outStream.open("output.txt");
for (int j=1; j<=size; j++){
inStream.seekg(-j, ios::end);
c=inStream.get();
outStream << c;
}
inStream.close();
outStream.close();
return 0;
}
Вопрос требует редактирования формата, чтобы лучше показать построчный характер содержимого файла.
Почему text и c передаются функции? Один вообще не используется, а другой лучше обслуживается, просто потому что он местный.
Каков ваш дизайн? Как Вы ожидали, что ваш код сделает то, что вы хотели?
Этот код должен быть функцией, которая будет использоваться основным кодом.
Этот stackoverflow.com/questions/10813930/read-a-file-backwards может быть тем, что вы ищете.





Вы переворачиваете весь файл, символ за символом. То, что вы хотите сделать, это прочитать каждую строку отдельно, а затем изменить порядок строк.
Стек строк кажется хорошим выбором для этого:
int printRev(string filename)
{
stack<string> lines;
ifstream in(filename);
string line;
while (getline(in, line))
{
lines.push(line);
}
ofstream out("output.txt");
while (!lines.empty())
{
out << lines.top() << endl;
lines.pop();
}
return 0;
}
Вы имели в виду, что ожидаемый результат будет «очень забавным, так что просто еще раз проверьте файл, это привет»?