Ik wil een programma maken, dat handmatig een bitmap inleest en weergeeft. Ik ben nogal nieuw met c++, dus het volgende werkt niet zoals verwacht:
Het probleem is dus dat als ik per element in mijn struct-type ga lezen, zoals het eerste voorbeeld het perfect werkt: (output "ID:19778 Filesize:1798"), zoals ook in het bestand staat.
Als ik nu dus in een keer de hele struct wil lezen, hij de variabelen in header1 niet goed inlaadt: (output "ID:19778 Filesize:0"). Ook bij meer variabelen in de header zal alleen de eerste (id) werken. Hoe komt dit? Wat doe ik verkeerd?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| #include <stdlib.h> #include <fstream.h> typedef struct bmpheader { short id; int filesize; }; const char * filename = "bmp1.bmp"; int main(int argc, char *argv[]) { bmpheader header1; ifstream file (filename, ios::in|ios::binary); //eerste voorbeeld file.seekg(0,ios::beg); file.read(&header1.id,sizeof(header1.id)); file.read(&header1.filesize,sizeof(header1.filesize)); cout << "ID: " << header1.id; cout << " Filesize: " << header1.filesize << endl; //tweede voorbeeld file.seekg(0,ios::beg); file.read(&header1,sizeof(header1)); cout << "ID: " << header1.id; cout << " Filesize: " << header1.filesize; file.close(); system("pause"); return 0; } |
Het probleem is dus dat als ik per element in mijn struct-type ga lezen, zoals het eerste voorbeeld het perfect werkt: (output "ID:19778 Filesize:1798"), zoals ook in het bestand staat.
Als ik nu dus in een keer de hele struct wil lezen, hij de variabelen in header1 niet goed inlaadt: (output "ID:19778 Filesize:0"). Ook bij meer variabelen in de header zal alleen de eerste (id) werken. Hoe komt dit? Wat doe ik verkeerd?
[ Voor 9% gewijzigd door Verwijderd op 22-05-2003 21:42 ]