Здравствуйте.
Задача.Существует двоичный файл, в котором находятся элементы в следящем порядке:
- фиксированное количество элементов типа
unsigned short - атрибуты, для упрощения пусть будет пять элементов,
- за ними следуют данные типа
short, количество которых указывается в пятом элементе атрибутов.
// структура двоичного файла
// атрибуты
// unsigned short - Day (день)
// unsigned short - Month (месяц)
// unsigned short - Year (год)
// unsigned short - Hour (часы)
// unsigned short - Number (количество элементов)
// данные
// short - | 1 | 2 | 3| ... | Number
Необходимо считать элементы данных в динамический массив.
На стандартном С++ я реализовал решение этой задачи следующим образом:
C++ (Qt)
char NameFile[] = "test.dat";
unsigned short Day(0);
unsigned short Month(0);
unsigned short Year(0);
unsigned short Hour(0);
unsigned short Number(0);
short Buff_Data(0);
short *Data_ array;
fstream FileOut;
FileOut.open(NameFile, ios_base::in | ios_base::binary);
if (!FileOut.is_open())
{
cerr << "Error open file: " << NameFile << "\n";
exit(0);
}
FileOut.read((char *) &Day, sizeof Day);
FileOut.read((char *) &Month, sizeof Month);
FileOut.read((char *) &Year, sizeof Year);
FileOut.read((char *) &Hour, sizeof Hour);
FileOut.read((char *) &Number, sizeof Number);
Data_ array = new short [Number];
for(int i=0;i< Number; i++) Data_ array[i]=0;
int i(0);
while (FileOut.read((char *) &Buff_Data, sizeof Buff_Data))
{
Data_ array[i] = Buff_Data;
i++;
}
FileOut.close();
FileOut.clear();
// --------------------
// ...
// --------------------
delete [] Data_ array;
Вопрос: подскажите, пожалуйста, как считать поэлементно данные из указанного бинарного файла средствами Qt?