Название: Считать бинарный файл средствами Qt Отправлено: melifaro от Июль 08, 2009, 22:59 Есть бинарный файл(порятка 20Mb), его нужно считывать блоками по 42 байта и заполнять этим QLinkedList<Rez_10_A2> который находится в классе.
struct Rez_10_A2 //собственно 42 байта { тут пара десятков полей } Вопрос - как? Как считать из потока QDataStream определенное количество байт? Ведь Rez_10_A2 buf; QDataStream stream(file); stream >> buf; Работает только со стандартными типами, а перегружать >> для Rez_10_A2 очень накладно, есть ли простой способ вроде fread из stdio.h? Название: Re: Считать бинарный файл средствами Qt Отправлено: f-r-o-s-t от Июль 08, 2009, 23:09 А чем будет накладно перегрузить >> ?
а читать из файла по байтам вот так: int QDataStream::readRawData ( char * s, int len ) Название: Re: Считать бинарный файл средствами Qt Отправлено: melifaro от Июль 08, 2009, 23:43 Накладно тем, что там куча полей и не факт что они стандартные.
Не могу никак понять как использовать QDataStream & QDataStream::readRawBytes (char * s, uint len), можешь написать пример? Вроде в моем случае что-то такое: while(!stream.atEnd) { s = new char[42]; stream.readRawBytes(s,42); rez = s;// Rez_10_A2 rez; list->append(rez); } При этом мы будем двигаться по файлу? И что-то я сомневаюсь что rez = s; покатит) Пока не знаю каким это образом сделать, подскажите пожалуйста. Название: Re: Считать бинарный файл средствами Qt Отправлено: f-r-o-s-t от Июль 08, 2009, 23:51 Ну rez = s; точно не покатит.
имхо Проще будет переопределить QDataStream &operator>>(QDataStream &, QXxx &); и если есть нестандартные поля то в них тоже переопределить его. сделать эту функцию friend для класса в котором переопределяешь и все. Иначе разбирать строчку и записывать в поля. Вот пример писал недавно: Код
и можно писать свой класс прямо в поток. П.С. не претендую на то что мое решение лучшие . Название: Re: Считать бинарный файл средствами Qt Отправлено: crackedmind от Июль 09, 2009, 01:37 Ну взять наплевать на все. Сделать для структуры выравнивание в 1 байт.
Затем Код
Название: Re: Считать бинарный файл средствами Qt Отправлено: ритт от Июль 09, 2009, 02:19 +1
самый ненакладный вариант Название: Re: Считать бинарный файл средствами Qt Отправлено: melifaro от Июль 09, 2009, 07:27 то что нужно, спасибо
Название: Re: Считать бинарный файл средствами Qt Отправлено: f-r-o-s-t от Июль 09, 2009, 08:58 Ну вот так вообще прекрасно =)
|