ファイルにビットごとに書き込みたい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;
}
そうですね、それを行う「a」の方法は、シリアル化メソッドとして文字列を使用することです。文字列引数を取るビットセットコンストラクターと、それを返すto_string()メンバー関数があります。コンストラクターとto_string()関数を使用してストリームの挿入と抽出を行う<<および>>ヘルパー演算子もあります。要件によっては、それでうまくいく場合があります。
これは1つのアプリケーションでは十分にコンパクトではなかったため、ビットセットのように見える(同じインターフェイスを持つ)クラスを作成することになりましたが、バイトストリームとしてシリアル化することもできます。つまり、基になるポインターを返す関数があります。それを構成するバイト配列。いくつかの実装のソースがあれば、書くのはそれほど難しくありませんでした。