2013-10-23 356 views
0

如何以字節形式讀取文件,而不是使用矢量。從文件中逐字節讀取

通過使用這個,我可以讀取整個文件成一個字節的矢量。

std::basic_ifstream<BYTE> file(driveName, std::ios::binary); 
vector<BYTE> x = std::vector<BYTE>(
    (std::istreambuf_iterator<BYTE>(file)), 
    std::istreambuf_iterator<BYTE>()); 

不過,我想先讀512個字節,那麼「X」個字節,「X1」字節等, 容量調整選項犯規在這裏工作。

我看到這個鏈接,reading the binary file into the vector of unsigned chars,這造成了更多的困惑。

任何幫助,將不勝感激。

+0

也許這可以給一個想法:http://stackoverflow.com/questions/5513532/reading-binary-istream-byte-by-byte/8574393 – codeling

+0

已經訪問的帖子.. couldnt從它收集很多 –

回答

1

您可以使用較低級別的接口:

std::ifstream ifs(filename, std::ios::binary); 
char buf1[512]; 
ifs.read(buf1, sizeof(buf1)/sizeof(*buf1)); 
char buf2[x]; 
ifs.read(buf2, sizeof(buf2)/sizeof(*buf2)); 
char buf3[x1]; 
ifs.read(buf3, sizeof(buf3)/sizeof(*buf3)); 

只是檢查EOF和錯誤。

+1

我想由BYTE讀取BYTE。這是逐字符讀取的。在sizeof(char)大於1 Byte的編譯器中,它會起作用嗎? –

+0

size(char)永遠是1.唯一不能保證的是char有8位似乎 - > http://stackoverflow.com/questions/4266771/char-size-confusion。然而,在大多數情況下,1字節應該有8位 – codeling

+0

感謝Andy和nyarlathotep .... –