4

ファイルにビットごとに書き込みたいstd::bitsetがありますが、もちろんfstreamの書き込み関数はこれをサポートしていません。文字列を使用して各8ビットグループをcharに変換し、それを書き込む以外に、別の方法を考えることはできません...

誰かが良い方法を知っていますか?

4

2 に答える 2

2

試す:

#include <bitset>
#include <fstream>

int main() {
    using namespace std;
    const bitset<12> x(2730ul); 
    cout << "x =      " << x << endl;

    ofstream ofs("C:\\test.txt"); // write as txt
    if (ofs) {
        // easy way, use the stream insertion operator
        ofs << x << endl;

        // using fstream::write()
        string s = x.to_string();
        ofs.write(s.c_str(), s.length()); 
    }
    return 0;
}
于 2009-04-22T17:46:21.277 に答える
0

そうですね、それを行う「a」の方法は、シリアル化メソッドとして文字列を使用することです。文字列引数を取るビットセットコンストラクターと、それを返すto_string()メンバー関数があります。コンストラクターとto_string()関数を使用してストリームの挿入と抽出を行う<<および>>ヘルパー演算子もあります。要件によっては、それでうまくいく場合があります。

これは1つのアプリケーションでは十分にコンパクトではなかったため、ビットセットのように見える(同じインターフェイスを持つ)クラスを作成することになりましたが、バイトストリームとしてシリアル化することもできます。つまり、基になるポインターを返す関数があります。それを構成するバイト配列。いくつかの実装のソースがあれば、書くのはそれほど難しくありませんでした。

于 2009-04-22T18:19:17.733 に答える