Fichier .Raw

Signaler
Messages postés
32
Date d'inscription
lundi 10 avril 2006
Statut
Membre
Dernière intervention
5 juillet 2006
-
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
-
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

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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.
Messages postés
32
Date d'inscription
lundi 10 avril 2006
Statut
Membre
Dernière intervention
5 juillet 2006

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à !
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
T'as oublié "#include <string>" probablement ou "using namespace std;"