在C ++,Ubuntu中使用BMP文件进行Woking

时间:2015-02-10 14:06:41

标签: c++ linux terminal g++ bmp

我正在尝试使用g ++编译器在Linux中使用bmp文件。我使用的是C ++语言。

我需要从标准输入加载.bmp文件。例如:

./a.out < test.bmp

所以我需要一个代码来完成这项工作。我认为存储整个.bmp文件很好,因为我不知道如何做到这一点。

我试过这段代码,但它没有工作:

vector<int> bitmap;
int b;
while ( cin >> b ) {
    bitmap.push_back(b);
    cout << "!" << endl;
}

那我该怎么做呢?

2 个答案:

答案 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));