ビットセットデータをファイルに書き込むにはどうすればよいですか?[重複]

StackOverflow https://stackoverflow.com/questions/778378

  •  13-09-2019
  •  | 
  •  

質問

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

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

役に立ちましたか?

解決

試します:

#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;
}

他のヒント

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top