Russian Qt Forum
Ноябрь 26, 2024, 08:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Чтение Q-файла и сравнение строки  (Прочитано 3886 раз)
robix
Гость
« : Июнь 21, 2013, 14:35 »

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

3434534
4254667
0054644

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

ВОПРОС: Улыбающийся
Не могли бы вы написать функцию, которая возьмет этот, уже открытый файл, пробежится по нему, и проверит на совпадение со строкой check все его строки?
Если можно сразу открыть файл, чтобы и записывать в конец и читать, то подскажите как его открывать?
Записан
Bepec
Гость
« Ответ #1 : Июнь 21, 2013, 14:46 »

http://qt-project.org/doc/qt-4.7/qfile.html

Читать с раздела "Using Streams to Read Files"
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Июнь 22, 2013, 13:53 »

Сделай два объекта QFile, один для записи другой для чтения
Записан

Юра.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Июнь 22, 2013, 14:22 »

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

Igors а если значений около миллиарда? Веселый

PS ну или больше 2 гигабайт? Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Июнь 22, 2013, 16:23 »

Igors а если значений около миллиарда? Веселый

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

Что делать есои "реально много" - ну может возможно частное решение. Напр у автора строка - цифры, тогда можно хранить их в виде диапазонов "от" и "до". Или хешировать по частям. Ну или "прильнуть к источнику наслаждения" (СУБД). Но все это уже др песня.
Записан
Bepec
Гость
« Ответ #6 : Июнь 22, 2013, 17:06 »

Согласен.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 23.