2009-04-22 6 views
2

私はstd :: bitsetを持っていますが、これはビットにビットを書きますが、もちろんfstreamの書き込み関数はこれをサポートしていません。文字列を使って各8ビットグループを文字に変換して書き込む以外に、別の方法は考えられません。ビットセットデータをファイルに書き込む方法は?

誰もが知っていますか?

+0

これは残念ですが、この種の実装は非常に使いやすいものでした。 – jokoon

答えて

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; 
} 
+0

「マスク」とは何ですか? constビットセットを作成してから、同じ名前の別のビットセットを作成するのはなぜですか? –

+0

私の答えを更新しました。それらはSGIのビットセットの例を素早く編集したものです。 – dirkgently

+0

大丈夫です。 ofstream演算子<<と動作しますが、fstream.write()... checkでは動作しません。 –

0

まあ、それを行うための「」の方法は、あなたのシリアル化の方法として、文字列を使用することです。文字列引数を取るビットコンストラクタがあり、それを返すto_string()メンバ関数があります。 < <もあり、コンストラクタをutlizeとストリームの挿入と抽出にto_string()関数を使用する>>ヘルパ演算子があります。それはあなたの要求に応じてあなたのために働くかもしれません。

1つのアプリケーションではコンパクトではありませんでしたので、bitset(同じインターフェイスを持つ)のように見えるクラスを作成しましたが、それはバイトストリームとしてシリアライズ可能です。それを構成する基礎となるバイト配列へのポインタ。あなたが見るべきいくつかの実装のソースを持っているなら、書くのはあまりにもひどく難しいことではありませんでした。