Для моей текущей задачи мне нужна возможность чтения / записи (в основном на основе файлов) битовых потоков.
Хотя это более или менее тривиальная задача, если она написана на стандартном 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
}
Однако я не уверен, по какой дороге идти:
До сих пор мне никогда не приходилось получать / предоставлять свои собственные потоковые классы, но я хочу улучшить свои
знания…
Может быть, кто-то может дать некоторые указатели или подсказки, какой способ предпочитать и почему !?
Спасибо!
Ваш лучший выбор, вероятно, сделать и то и другое новый класс потока и класс буфера потока. Используйте пользовательский класс потока, чтобы перегрузить операторы вывода, чтобы поместить один бит в пользовательский буфер потока.
Причина в том, что C ++ не поддерживает меньшие объекты, чем один байт (char
). Даже bool
Тип не является одним битом, так как он должен быть адресуемым.
Других решений пока нет …