我正在编写一段代码来做一些压缩,我写了一个比特流类。
我的比特流类跟踪我们正在读取的当前位和当前字节(无符号字符)。
我注意到如果我在 istream 类中使用 >> 运算符 vs get() 方法,从文件中读取下一个无符号字符的方式会有所不同。
我只是好奇为什么我得到不同的结果?
前任:
this->m_inputFileStream.open(inputFile, std::ifstream::binary);
unsigned char currentByte;
this->m_inputFileStream >> currentByte;
对比
this->m_inputFileStream.open(inputFile, std::ifstream::binary);
unsigned char currentByte;
this->m_inputFileStream.get((char&)currentByte);
附加信息:
具体来说,我正在读取的字节是 0x0A 但是当使用 >> 时,它会将其读取为 0x6F
我不确定它们是如何相关的?(它们不是彼此的 2s 补码吗?)
>> 运算符也被定义为适用于 unsigned char 但是(请参阅c++ istream 类参考