我有一个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()
答案 0 :(得分:0)
当我阅读bit set&lt;&gt;的文档时,字符串应该只包含'1'和'0'。所以在你的情况下,只需遍历mDataBuffer中的所有位,并使用set来设置位集中的位。
原因是,如果你需要的话,你可以坚持使用vector< unsigned char >
并将这些位拉出来。这是有道理的,如果你只需要访问几个位。