2011-06-18 149 views
-2

我需要從在C jpg文件讀取的字節++這樣寫代碼:讀取二進制字節

ifstream in("1.jpg"ios::binary); 
    while(!in.eof()) 
{ 
char ch = in.get(); 
} 

你知道一個jpg文件包含256區別的字符,我們可以將它保存的重複在一個arr.but問題是,我寫的這段代碼以unicode的形式讀取字符,所以它包含9256區別char.how我可以從1.jpg讀取它不是unicode嗎?

+1

.jpeg包含字節,而不是字符。將in.get()的返回值轉換爲(unsigned char)。 –

+0

thnaks爲您的提示 –

回答

2

get函數從文件中讀取未格式化的數據,它只是將其讀取的字符轉換爲int。你是否看到從文件讀取的數據與文件中的實際數據不同?如果你在代碼的其他地方可能存在問題,那麼你應該提供更多的東西。

或者,您可以使用read來讀取未格式化數據的塊。

int main() 
{ 
    std::ifstream in("1.jpg", std::ios::binary); 

    char buffer[1024]; 

    while (in) 
    { 
     in.read(buffer, sizeof(buffer)); 

     if (in.gcount() > 0) 
     { 
      // read in.gcount() chars from the file 
      // process them here. 
     } 
    } 
}