Обратная запись текстового файла в QT - PullRequest
1 голос
/ 28 февраля 2012

Как лучше реализовать запись в QFile в обратном порядке, строка за строкой. С использованием seek (0) новая строка записывается поверх старой.

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

Вы должны использовать QStack QString. Поскольку это контейнер LIFO (Last In First Out), я думаю, это то, что вы ищете.

Нажмите каждую строку, когда она придет, а затем вытолкните все строки:

QStack<QString> stack;
stack.push("first string");
stack.push("second string");
stack.push("third string");

while (!stack.isEmpty())
{
   QString string = stack.pop();
}

Редактировать : (новая информация в комментариях относительно двух файлов для записи)

Используйте Qvector для хранения всей строки QString. Затем в циклическом доступе первый и последний элемент записывают их в каждый файл. Это можно сделать так:

QVector<QString> vector;
vector.append("first string");
vector.append("second string");
vector.append("third string");

int size = vector.size();
for (int i=0; i<size; i++)
{
   QString string1 = vector[0]; // write it in one file
   Qstring string2 = vector[size-1-i]; // write it in another file
}

Надеюсь, что ответит на ваш вопрос.

0 голосов
/ 28 февраля 2012

Прочитать весь файл. Сохраните его в векторе QStrings в памяти. Пройдите через вектор, переворачивая все строки, и снова сохраните этот вектор в файле.

...