1

私の現在のタスクでは、(主にファイル ベースの) ビットストリームを読み書きする可能性が必要です。標準の 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 から直接派生します。

これまでのところ、独自のストリーム クラスを派生/提供する必要はありませんでしたが、知識を向上させたい...

たぶん、誰かがどちらを好むか、そしてその理由をいくつかの指針やヒントを提供できるでしょう!?

ありがとう!

4

1 に答える 1

0

おそらく最善の策は、新しいストリーム クラスとストリーム バッファ クラスの両方を作成することです。カスタム ストリーム クラスを使用して出力演算子をオーバーロードし、カスタム ストリーム バッファーに 1 ビットを配置します。

その理由は、C++ が 1 バイト ( ) よりも小さいエンティティをサポートしていないためcharです。アドレス可能である必要があるため、タイプでさえbool単一のビットではありません。

于 2012-11-27T10:58:53.487 に答える