Salut à tous,
Dans le cadre d'une importation de fichier propriétaire, je dois lire en mode binaire puis tester les valeurs pour savoir ou je me trouve dans la structure de celui ci (il est organisé en "chunks").
Alors j'ai un code source qui fait cette importation, mais j'aurais souhaité le refaire pour déja m'améliorer mais également changer le mode d'acces (il passe par des memcpy...)
Donc vaillant gaillard que je suis, je fais mes recherches, determine qu'apparement, au vu des topics du forums et de la FAQ il faut passer par ifstream.
Donc je balance un petit bout de code pour voir si au moins j'arrive à lire le premier noeud composé comme suit :
ID : 2 octets
longueur_chunk : 4 octets.
voici mon code :
Donc voici mes deux questions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #define MAIN_3DS 0x4d4d unsigned char buff; //buffer de lecture ifstream filein(filename.c_str(),ios::binary); //ouverture du fichier if(filein) // si l'ouverture a réussi { filein.read(reinterpret_cast<char*>(&buff),2); //on lit les deux premiers octets -> Id if(buff==MAIN_3DS) printf("reussi"); filein.read(reinterpret_cast<char*>(&buff),4); //on lit les 4 octets suivants } filein.close();
1) filein.read deplace bien le curseur ? c'est à dire qu'apres un read de 2 octets, le prochain read commencera au troisieme ? (je prefere etre sur car j'ai un petit doute)
2) Mon test ne fonctionne pas...
Si je fais afficher le contenu de mon buff, il m'affiche "M", je suppose qu'il faut que je fasse quelque chose à ce buff pour pouvoir le tester avec la valeur de ma constante non ?Comment faire pour que ça passe ? Sincerement, je ne vois pas trop comment faire là.
Merci d'avance et désolé pour la récurrence du sujet ^^ apparement c'est un probleme mystique qui touche pas mal de monde
@++
Partager