Fichier .Raw

benlustr Messages postés 32 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 5 juillet 2006 - 27 juin 2006 à 14:07
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 27 juin 2006 à 15:54
Bonjour à tous, que me conseillez vous de faire pour lire un fichier .raw en C++.
Je m'explique : je suis sous visual C++ 2005 express edition, et je souhaiterais accéder aux pixels de mon image .raw. J'ai essayé d'utiliser les fonctions C habituelles (fopen fread etc), mais j'utilise une openfiledialog pour récupérer le nom de mon fichier (en String). Or, fopen attend un nom en char*.

Deux questions donc :

*Est ce judicieux d'utiliser fopen, et donc de faire une conversion String -> char* (comment d'ailleurs ? c_str() ne fonctionne pas !)
*Existe-il une meilleure méthode pour accéder aux octet d'un fichier directement ???

Merci à vous et bonne journée !

3 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
27 juin 2006 à 14:47
c_str() fonctionne parfaitement sinon tu penses bien que ca se saurait :)


pour accéder aux octets:


#include <fstream>


std::ifstream file("test.raw", std::ios::binary);

if (!file) return; // en gros, ya une erreur


file.seekg(0, std::ios_base::end); // on va a la fin du fichier


unsigned int buffer_size = (unsigned int)file.tellg(); // on retourne la position de la fin, cad la longueur du fichier


char * buffer = new char[buffer_size];

file.read(buffer, buffer_size);


Et la, t'as plus qu'à lire les octets de buffer.
0
benlustr Messages postés 32 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 5 juillet 2006
27 juin 2006 à 15:04
Merci beaucoup !!
Pour l'histoire de c_str, j'ai ce problème :

J'ouvre ma boite de dialogue en faisant :

FILE *fichier;
open1->ShowDialog();
fichier = fopen(open1->FileName.c_str(),"r");

et j'ai l'erreur :

error C2228: la partie gauche de '.c_str' doit avoir un class/struct/union

Voilà !
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
27 juin 2006 à 15:54
T'as oublié "#include <string>" probablement ou "using namespace std;"
0
Rejoignez-nous