我正在尝试使用g ++编译器在Linux中使用bmp文件。我使用的是C ++语言。
我需要从标准输入加载.bmp文件。例如:
./a.out < test.bmp
所以我需要一个代码来完成这项工作。我认为存储整个.bmp文件很好,因为我不知道如何做到这一点。
我试过这段代码,但它没有工作:
vector<int> bitmap;
int b;
while ( cin >> b ) {
bitmap.push_back(b);
cout << "!" << endl;
}
那我该怎么做呢?
答案 0 :(得分:0)
cin >> b
以文本模式读取文件,这不适用于二进制文件。使用这样的东西:
ifstream myFile ("test.bmp", ios::in | ios::binary);
打开文件流,然后
if (!myFile.read (buffer, 100)) {
// do thomething with data in buffer
}
答案 1 :(得分:0)
我找到了一个正常工作的答案。 此代码从标准输入中的* .bmp文件中读取bmp_info_header:
char bmpHeader[54];
cin.get(bmpHeader, 54);
&#34; 54&#34;在cin.get()中告诉系统从输入接受最多54个数字并忽略另一个。
现在例如,如果我们想要找到* .bmp大小,我们应该使用这段代码:
int filesize = *((int*)(headers + 2));