C ++ - 将二进制文件的一部分读入bitset

时间:2014-01-29 13:57:11

标签: c++ file

我有一个C++应用程序,我需要读取二进制文件的一部分并将这些字节放入std::bitset

我能够将二进制文件的正确部分读入std::string对象,但如果可以避免,我不想从unsigned char->std::string->std::bitset开始。

有没有办法直接将文件的一部分读入bitset?

到目前为止,我有代码(在这个例子中,我从位置64开始,然后将128个字节读入string,然后初始化bitset):

//Open the file
std::ifstream file (path, std::ios::in | std::ios::binary | std::ios::ate);

//Move to the position to start reading
file.seekg(64); 

//Read 128 bytes of the file
std::vector<unsigned char> mDataBuffer;
mDataBuffer.resize( 128 ) ;
file.read( (char*)( &mDataBuffer[0]), 128 ) ;

//Read as string (I'm trying to avoid this)
std::string s_data( mDataBuffer.begin(), mDataBuffer.end()); 
std::bitset<1024> foo (s_data); //8 bits/byte x 128 bytes = 1024 bits

file.close()

1 个答案:

答案 0 :(得分:0)

当我阅读bit set&lt;&gt;的文档时,字符串应该只包含'1'和'0'。所以在你的情况下,只需遍历mDataBuffer中的所有位,并使用set来设置位集中的位。

原因是,如果你需要的话,你可以坚持使用vector< unsigned char >并将这些位拉出来。这是有道理的,如果你只需要访问几个位。