私はstd :: bitsetを持っていますが、これはビットにビットを書きますが、もちろんfstreamの書き込み関数はこれをサポートしていません。文字列を使って各8ビットグループを文字に変換して書き込む以外に、別の方法は考えられません。ビットセットデータをファイルに書き込む方法は?
誰もが知っていますか?
私はstd :: bitsetを持っていますが、これはビットにビットを書きますが、もちろんfstreamの書き込み関数はこれをサポートしていません。文字列を使って各8ビットグループを文字に変換して書き込む以外に、別の方法は考えられません。ビットセットデータをファイルに書き込む方法は?
誰もが知っていますか?
試してみてください。
#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;
}
「マスク」とは何ですか? constビットセットを作成してから、同じ名前の別のビットセットを作成するのはなぜですか? –
私の答えを更新しました。それらはSGIのビットセットの例を素早く編集したものです。 – dirkgently
大丈夫です。 ofstream演算子<<と動作しますが、fstream.write()... checkでは動作しません。 –
まあ、それを行うための「」の方法は、あなたのシリアル化の方法として、文字列を使用することです。文字列引数を取るビットコンストラクタがあり、それを返すto_string()メンバ関数があります。 < <もあり、コンストラクタをutlizeとストリームの挿入と抽出にto_string()関数を使用する>>ヘルパ演算子があります。それはあなたの要求に応じてあなたのために働くかもしれません。
1つのアプリケーションではコンパクトではありませんでしたので、bitset(同じインターフェイスを持つ)のように見えるクラスを作成しましたが、それはバイトストリームとしてシリアライズ可能です。それを構成する基礎となるバイト配列へのポインタ。あなたが見るべきいくつかの実装のソースを持っているなら、書くのはあまりにもひどく難しいことではありませんでした。
これは残念ですが、この種の実装は非常に使いやすいものでした。 – jokoon