Я работал над фрагментом кода, чтобы выполнить сжатие, и написал класс битового потока.
Мой класс битового потока отслеживал текущий бит, который мы читаем, и текущий байт (unsigned char).
Я заметил, что чтение следующего беззнакового символа из файла происходило иначе, если я использовал метод >> operator vs get () в классе istream.
Мне просто было любопытно, почему я получаю разные результаты?
ex:
this->m_inputFileStream.open(inputFile, std::ifstream::binary);
unsigned char currentByte;
this->m_inputFileStream >> currentByte;
vs.
this->m_inputFileStream.open(inputFile, std::ifstream::binary);
unsigned char currentByte;
this->m_inputFileStream.get((char&)currentByte);
Дополнительная информация:
Чтобы быть конкретным, байт, который я читал, был 0x0A, однако при использовании >> он читал бы его как 0x6F
Я не уверен, как они вообще связаны? (они не являются дополнением друг друга?)
Однако оператор >> также определен для работы с символами без знака (см. Справочник по классу c ++ istream