Boost.Iostreams против перегрузки iostream / streambuf для битового потока ввода-вывода

Для моей текущей задачи мне нужна возможность чтения / записи (в основном на основе файлов) битовых потоков.
Хотя это более или менее тривиальная задача, если она написана на стандартном C / C ++.
переписать код, используя более общий подход, перегружая и используя
стандартный STL iostream или аналогичный, так что я могу написать что-то вроде

writeHeader();
{
ofstream outfile ("test.bin");
outfile << true; // Write 1 bit
outfile << false; // Write 1 bit
outfile << (char)0x42; // Write 8 bits
}

Однако я не уверен, по какой дороге идти:

  1. Используя Boost.IOStream или
  2. Получите из streambuf или iostream напрямую.

До сих пор мне никогда не приходилось получать / предоставлять свои собственные потоковые классы, но я хочу улучшить свои
знания…

Может быть, кто-то может дать некоторые указатели или подсказки, какой способ предпочитать и почему !?

Спасибо!

1

Решение

Ваш лучший выбор, вероятно, сделать и то и другое новый класс потока и класс буфера потока. Используйте пользовательский класс потока, чтобы перегрузить операторы вывода, чтобы поместить один бит в пользовательский буфер потока.

Причина в том, что C ++ не поддерживает меньшие объекты, чем один байт (char). Даже bool Тип не является одним битом, так как он должен быть адресуемым.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]