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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: читать поток до того как всетретится сочетание символов<a  (Прочитано 5984 раз)
noname.pl
Гость
« : Февраль 09, 2007, 22:19 »

привет всем. хочу читать поток QTextStream, ассоциированный с текстовым файлом до того, как встретится последовательность символов, например <123>. не нашел в доке (а скорее туплю). спасибо за помощь! Подмигивающий
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Февраль 10, 2007, 00:39 »

читаешь по байту и запоминаешь посл. считанные (n штук). Каждый раз проверяешь, если запомненные и тока что прочитанный байты равны этой последовательности, то усе. Иначе тока что прочитанный байт закидываешь в конец запомненных и читаешь далее.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
noname.pl
Гость
« Ответ #2 : Февраль 10, 2007, 14:28 »

=) это понятно, но такой спасоб не очень красив. надеялся что мне подскажут, возможно, как это сделать через seek или что-то в этом роде. ... возможно будет удобнее сделать readAll в какой-то QString буфер и разбирать уже его.
Записан
mega_m
Гость
« Ответ #3 : Февраль 10, 2007, 16:20 »

Собственно если последовательность символов не сложная или (и) мала, то делать как сказал Racheengel, а так на основе конечного автомата.
Записан
nova
Гость
« Ответ #4 : Февраль 10, 2007, 19:27 »

А по моему, если данных не много, то проше читать фсе в буфер и разбирать его.
Записан
noname.pl
Гость
« Ответ #5 : Февраль 11, 2007, 04:49 »

Цитата: "mega_m"
Собственно если последовательность символов не сложная или (и) мала, то делать как сказал Racheengel, а так на основе конечного автомата.

можно пример?

2nova% данных несколько мегабайт текстовых файлов.
Записан
nova
Гость
« Ответ #6 : Февраль 11, 2007, 20:26 »

Посмотри реализацию QIODevice::readLineData в исходниках QT. там все просто Улыбающийся
замени на свое условие выхода из цикла Улыбающийся
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #7 : Февраль 13, 2007, 00:21 »

Тогда просто читаешь, пока не встретишь первый нужный символ. Если так - сравниваешь все следующие подряд с образцом. Но тебе все равно придется КАЖДЫЙ символ читать, при чем тут seek?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
noname.pl
Гость
« Ответ #8 : Февраль 15, 2007, 03:27 »

2Racheengel% думал, может есть какой-то более "элегантный" способ (уже написаный метод), а так конечно чтение по байту. в qt ведь все нашару, почему бы не на столько =)
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #9 : Февраль 16, 2007, 00:48 »

та вроде нету...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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