Russian Qt Forum
Ноябрь 25, 2024, 15:19
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Чтение файла задом наперёд
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Чтение файла задом наперёд (Прочитано 6643 раз)
fulkabaster
Гость
Чтение файла задом наперёд
«
:
Март 05, 2009, 17:26 »
Открывается QFile, с ним связывается поток QTextStream, чтение происходит посимвольно ( >> QChar ). Иногда нужно остановить обычное чтение и считать N символов назад, в обратном порядке. Я бы реализовал это примерно так:
QChar sym;
QTextStream in;
...
in.seek( in.pos() +1 );
for (int i=0; i<N; i++) {
in.seek( in.pos() -2 );
in >> sym;
}
но может быть существует прямой метод "обратного считывания", без постоянного скакания с помощью seek?
«
Последнее редактирование: Март 05, 2009, 17:28 от fulkabaster
»
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Чтение файла задом наперёд
«
Ответ #1 :
Март 05, 2009, 17:43 »
а уже обсуждалось, название темы не помню, что-то вроде "Чтение файла с конца", поищи.
Записан
Юра.
fulkabaster
Гость
Re: Чтение файла задом наперёд
«
Ответ #2 :
Март 06, 2009, 17:00 »
Не нашел
Искал по разным критериям, по всем разделам.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Чтение файла задом наперёд
«
Ответ #3 :
Март 06, 2009, 17:11 »
нашел, но оказывается там про Qt3:
http://www.prog.org.ru/topic_8493_0.html
Записан
Юра.
Rcus
Гость
Re: Чтение файла задом наперёд
«
Ответ #4 :
Март 06, 2009, 17:40 »
Из поста получается что файл представлен в кодировке ucs2 (utf16 без суррогатных пар). Почему бы тогда не использовать in.seek( in.pos() - 2 * N), а затем считывать методом QString read ( qint64 maxlen ). А затем развернуть результат.
Записан
fulkabaster
Гость
Re: Чтение файла задом наперёд
«
Ответ #5 :
Март 06, 2009, 19:13 »
В файле - текстовые символы. И считывать нужно именно посимвольно, т.к. символы запихиваютс в дек (deque из STL). Причем если чтение идет вперед, то запихиваются с одного конца (push_back(char) ), если назад - с другого конца (push_front(char) ). Поэтому и интересует, есть ли метод прямого считывания в обратном порядке. С QString получтся еще дольше.
(Кстати, почему в контейнерах QT не предусмотрен аналог deque? Вектора и списки есть, а вот деков нет).
Записан
BRE
Гость
Re: Чтение файла задом наперёд
«
Ответ #6 :
Март 06, 2009, 19:21 »
Цитата: fulkabaster от Март 06, 2009, 19:13
(Кстати, почему в контейнерах QT не предусмотрен аналог deque? Вектора и списки есть, а вот деков нет).
В QList также можно вставлять в начало и конец списка:
void QList::push_front ( const T & value )
void QList::push_back ( const T & value )
+ QLinkedList.
«
Последнее редактирование: Март 06, 2009, 19:25 от BRE
»
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...