Salut,
Pour charger le fichier, tu pourrais sans doute te baser sur quelques entrée de la FAQ comme celle-ci ou encore celle-ci.
Seulement, cela ne résoudra peut etre qu'une partie du problème car il faudra compléter le traitement par une conversion des données brutes en données utilisables.
Cependant, si les fichiers sont sauvegardés au format binaire que le format est constant, tu devrais pouvoir faire les choses de manière assez rapide en lisant directement tout le fichier (hors en-tête) selon cette méthode et en faisant un "simple" transtypage du résultat en un tableau de ta structure.
Par exemple:
Il devrait etre "assez facile" de déterminer la taille que prend un QTime dans le fichier (ca doit etre documenté, ca, non question
Le premier lien que je t'ai donné vers la FAQ t'indique la manière de calculer la taille du fichier.
Tu pourrais donc partir du principe de créer un tableau de char de la taille complete du fichier, sous une forme proche de
1 2 3 4
| /* j'aimerais éviter mais ca pourrait aller pour cela ;) */
char * tab = new char[filesize-sizeof(QTime)];
/* idéalement, on préférerait sans doute un */
std:vector<char> tab(fileSize-sizeof(QTime),'\0'); |
on lit l'ensemble en une seule grande instruction read, sous la forme de
1 2 3
| std::ifstream file("fichier.dat",std::ios_base::binary);
file.seekg(sizeof(QTime), ios::beg);
file.read(&tab[0],filesize); |
et l'on converti le tout "à la rache" dans un tableau de la structure ad-hoc avec un
LaStructure * result = reinterpret_cast<LaStructure*>(&tab[0]);
Ce n'est peut etre pas très beau comme code, mais, une structure qui est régulièrement répété dans ton fichier, tu devrais pouvoir avoir une lecture assez rapide de cette manière
Partager