あり、それはエンディアンの問題に対処するのはあなた次第が一般的です。だから当分の間それをスキップしましょう。キャストが必要である
uint64_t value = 0xfeedfacedeadbeef;
std::ofstream file("output.bin", ios::binary);
file.write(reinterpret_cast<char*>(&value), sizeof(value));
をchar*
とファイルストリームディールので、しかし、あなたはにどんなバイトストリームを書き込むことができます:あなたはちょうどそのようなファイルとしてストリームにバイナリデータを書き込みたい場合は、このような何かを行うことができますそれはあなたが好きです。
"Plain Old Data"(POD)であれば、このように構造全体を記述することもできます。たとえば:
struct T {
uint32_t a;
uint16_t b;
};
T value2 = { 123, 45 };
std::ofstream file("output.bin", ios::binary);
file.write(reinterpret_cast<char*>(&value2), sizeof(value2));
バックこれらの事を読むfile.read
を使用して似ていますが、前述のように、あなたが本当にエンディアンに気をすれば、あなたはそれを自分で世話をする必要があります。
POD以外のタイプ(例:std::string
)を扱う場合は、より複雑なデータシリアライズシステムを扱う必要があります。必要に応じてこれに対処する多数のオプションがあります。
'e.offsets'はファイルまたはバッファですか? – kennytm
@kennytm、私はエキスパートにはいませんが、docsのようです: 'binary.Write(destination、endian、data_to_write) ' –
@ArafatKはあなたが気にするエンディアンのことですか? –