私は構造体を持っています。私は、この構造体の配列を持っているし、バイナリファイルにこれを書いて、それを読んでみたいです。ただし、この配列は動的に割り当てられる必要があります。私はこれにどのように接近すべきか分かりません。私の現在の推測では、このです:バイナリファイルから構造体に動的に割り当てられた配列を読み込みます。
私はこのようなファイルへの構造体を作成し、次に定義すると:
struct map {
int *tiles;
};
int main() {
map sample;
sample.tiles = new int[2];
sample.tiles[0]=1;
sample.tiles[1]=2;
ofstream file("sample.data", ios::binary);
file.write((char *)&sample, sizeof(sample));
file.close();
return 0;
}
その後、別のプログラムでは、このようにそれを読む:私はしたいとき
map test;
ifstream file("sample.data", ios::binary);
file.read((char *)&test, sizeof(test));
cout << test.tiles[0];
で結果を確認し、私は不気味膨大な数の、しかしはっきりではない、私はORIG番号を取得インラインでファイルに書きました。
これを行う正しい方法は何ですか?アレイの大きさを知らずにアレイを読み取るにはどうすればよいですか?
まず、あなたの構造体に別の名前を付けると、 'std :: map'と衝突する可能性があります。 – kebs
size()は動作しません。コンパイル時の演算子です。サイズを事前に把握していない場合は、そのようなベクターなどのstdコレクションを使用してください。 – OldProgrammer
ちなみに、あなたのコードはここでメモリをリークしています(書き込み中)、初期化されていないメモリにアクセスしています(読み込み中)。 [3/5/0のルール](http://stackoverflow.com/documentation/c%2b%2b/1206/the-rule-of-three-five-and-zero)を読んで、あなたのデザインを再設計してください。構造体、おそらく 'std :: unique_ptr' –
wasthishelpful