Russian Qt Forum

Qt => Вопросы новичков => Тема начата: robix от Июнь 21, 2013, 14:35



Название: Чтение Q-файла и сравнение строки
Отправлено: robix от Июнь 21, 2013, 14:35
Здравствуйте.
Имеется файл QFile file("C://log.txt")
Он уже открыт, как file.open(QIODevice::Append | QIODevice::Text);
И в него периодически записываются строки из нескольких чисел одинаковой длины, с переходном на новую строку,
например файл выглядит так:

3434534
4254667
0054644

Иногда, например, нужно в процессе проверить весь файл на то, нет ли среди уже записанных строк некой строки.
Пусть это будет QString check("5550000")

ВОПРОС: :)
Не могли бы вы написать функцию, которая возьмет этот, уже открытый файл, пробежится по нему, и проверит на совпадение со строкой check все его строки?
Если можно сразу открыть файл, чтобы и записывать в конец и читать, то подскажите как его открывать?


Название: Re: Чтение Q-файла и сравнение строки
Отправлено: Bepec от Июнь 21, 2013, 14:46
http://qt-project.org/doc/qt-4.7/qfile.html

Читать с раздела "Using Streams to Read Files"


Название: Re: Чтение Q-файла и сравнение строки
Отправлено: lit-uriy от Июнь 22, 2013, 13:53
Сделай два объекта QFile, один для записи другой для чтения


Название: Re: Чтение Q-файла и сравнение строки
Отправлено: Igors от Июнь 22, 2013, 14:22
Не могли бы вы написать функцию, которая возьмет этот, уже открытый файл, пробежится по нему, и проверит на совпадение со строкой check все его строки?
Если можно сразу открыть файл, чтобы и записывать в конец и читать, то подскажите как его открывать?
На мой вгляд - неверная постановка задачи. Нужно сразу открыть файл по чтению, прочитать все строки в QHash (или QSet), закрыть его и потом заниматься добавлением как у Вас (при этом пополняя QHash). Тогда проверка на наличие просто QHash::exists. А бегать по файлу взад-вперед чтобы проверить строку - как минимум коряво


Название: Re: Чтение Q-файла и сравнение строки
Отправлено: Bepec от Июнь 22, 2013, 14:26
Igors а если значений около миллиарда? :D

PS ну или больше 2 гигабайт? :D


Название: Re: Чтение Q-файла и сравнение строки
Отправлено: Igors от Июнь 22, 2013, 16:23
Igors а если значений около миллиарда? :D

PS ну или больше 2 гигабайт? :D
Все работает в каих-то пределах, напр Qt таблицы, листы и др тоже захлебнутся при таких объемах, это нормально. Поддержка больших данных - уже другая задача. Не надо думать что любой написанный код сработает хорошо на любых данных - это бывает редко :)

Что делать есои "реально много" - ну может возможно частное решение. Напр у автора строка - цифры, тогда можно хранить их в виде диапазонов "от" и "до". Или хешировать по частям. Ну или "прильнуть к источнику наслаждения" (СУБД). Но все это уже др песня.


Название: Re: Чтение Q-файла и сравнение строки
Отправлено: Bepec от Июнь 22, 2013, 17:06
Согласен.