Tout d'abord, étant nouveau sur ce forum, bonsoir à tous.
Alors, j'essaye de créer une classe nommée Image dont le constructeur prend en argument un nom de fichier. Le fichier est formaté de la manière suivante :
(4 4)
20 20 13 20
20 20 a7 af
40 bb c8 20
20 c8 cd cd
La première ligne donne la taille du bloc de données, les lignes du dessous contiennent des valeurs sur un octet au format hexadécimal.
J'essaye de récupérer ces valeurs pour les stocker au format décimal dans char * liste. J'arrive bien à chopper ce qui se trouve dans les parenthèses, pour le reste, ce sont, mes amis, trois heures d'échecs.
Voici le code du constructeur :
Voici la fonction d'affichage que j'appelle dans mon main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Image::Image(const char * fichier) { ifstream str(fichier, ios::in) ; if(str){ int ncol, nlin, ii = 0 ; char line[16] ; str.getline(line, 16, '\n') ; sscanf(line, "(%d %d)", &ncol, &nlin) ; this->lignes = nlin ; this->colonnes = ncol ; this->liste = new char[nlin*ncol] ; while(!str.eof()){ str >> std::dec >> this->liste[ii++] ; } str.close() ; } else{ std::cerr << "Ouverture impossible." << std::endl ; } }
Et voici l'affichage sur la console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Test::Test() { Image image("image.txt"); int kk = 0; for (int yy = 0; yy < image.get_lignes(); ++yy) { std::cout << std::endl; for (int xx = 0; xx < image.get_colonnes(); ++xx) { std::cout << image.get_liste()[kk++]; } } _getch(); }
Donc pas du tout ce que j'attends. En effet, on devrait voir un genre de lapin en ASCII, non un paquet de chiffres.
Que me conseillez-vous ?
Merci d'avance.
Partager