2012-08-14 20 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