2012-08-14 98 views
-1

编辑C++:当使用bitset数组(正确!)代替bitset变量时,程序似乎不工作

//编写了一些用于工作目的的代码。

+3

-1:这是一个很好的SO问题太多的代码。将代码降至最低程度,以显示问题。 – thiton 2012-08-17 14:40:23

+1

这真的是产生此问题的最小代码量?似乎有点臃肿.. – stefan 2012-08-17 14:41:11

+7

发布赏金以防止问题被关闭并不像学习使用调试器和编写最小测试用例那样富有成效。 – 2012-08-17 23:11:38

回答

7

我不太知道我理解为什么你需要一个8bpp的图像分割成monocrome图像,但如果你改变了save_bmp功能,下面,至少生成了一个“有效”的图像

void save_bmp(char *fname, BITMAPFILEHEADER *header, BITMAPINFOHEADER *info, 
    std::bitset<N> *image) 
{ 
    FILE *file_ptr = fopen(fname, "wb"); 
    fwrite(header, sizeof(BITMAPFILEHEADER), 1, file_ptr); 
    fwrite(info, sizeof(BITMAPINFOHEADER), 1, file_ptr); 
    fwrite(&create_palette(0,0,0), sizeof(RGBQUAD), 1, file_ptr); 
    fwrite(&create_palette(255,255,255), sizeof(RGBQUAD), 1, file_ptr); 

    //fwrite(image, N, 1, file_ptr); 
    unsigned char * b = pack(image); 
    fwrite(b,N/8,1,file_ptr); 
    delete[] b; 

    fclose(file_ptr); 
} 

std:bitset是一个对象而不是缓冲区。由于你已经有了一个包装函数,可以把这个位打包到缓冲区中,所以使用它可能很自然,而不是试图将一个对象写入文件。

+0

这似乎有伎俩,你的逻辑是做什么的? – Louis93 2012-08-20 19:21:42

+1

我编辑了答案的结尾来解释原因。 – TheSteve 2012-08-20 23:57:55