STLを使用してC ++でゲームの保存ファイル形式を作成する方法


7

STLのI / Oの部分、具体的にはfstreamについて学びました。ハードドライブに作成したバイナリ情報とクラスを保存できるようになりましたが、情報の読み取り方法を定義する方法がわかりません。

[this] [1]の投稿からファイル形式を作成するための答えを見つけました:

通常、BITMAPINFOHEADERなどの多数のレコード/構造を定義し、それらが来る順序、それらをどのようにネストするかを指定します。また、多くのインデックスとルックアップテーブルを作成する必要がある場合があります。このようなファイルは、多数のレコード(たぶん寄り添う)、ルックアップテーブル、マジックワード(構造の開始、構造の終了などを示す)、およびカスタム定義の形式の文字列で構成されます。

特に私が知りたいのは、STLとC ++でこれを行う方法です... このフォーマットは単にゲームを使用するためのものなので、はるかに簡単だと思います。形式は次のとおりです。

  • トラバース可能であること(私はそれを見て、構造の開始点を見つけ、名前を確認することができます
  • 1つのファイルに複数のクラスとデータを保持できる
  • テキストファイル内のスペースなど、セクションの開始と終了を識別できる
  • 多分それを表す独自のアイコンがあるのでしょうか?

C ++でこれを行うにはどうすればよいですか?



4
また、ファイル形式の作成方法を尋ねるのは少し失敗したと思います。ファイル形式は、ディスクに書き込むものです。そして、それをどのようにディスクに書き込んだかがわかっていれば、おそらくそれを読み戻す方法を理解することができます。ファイル形式を定義する理由は、コードを持たない人がファイルを読み取れるようにするためですが、おそらくそうする必要はありません。
テトラッド、2011

回答:


9

boost serializeを使用してみてください!それ以外にあなたが求めているのはシリアル化を実装する方法であり、それは本当に複雑なことです!私は最近シリアライゼーションの実装を実装しましたが、それを話すのは簡単なことではありません。

必要なすべての情報を含むファイルに1つのクラスのみを保存する別の方法もあります。これにより、クラスの保存/読み込みがはるかに簡単になります。

ちなみに、アイコンはファイル形式に関連するものではなく、OSがファイルごとに生成するものであり、通常、アイコンはOSファイル間のどこかに保存されます。Windows実行可能ファイルを除いて(私の知る限り)。Windowsの実行可能ファイルは、実際のバイナリ操作、いくつかのさまざまな解像度のアイコンデータ、およびOS自体に関連するその他のデータを含む、zipフォルダーのようなものです。


-1、彼が求めているのは厳密にはシリアライズではありません。アイコンについて言及するための+1はO / Sに関連しています。
減速

@danien:彼の質問からわかる限り、彼はすべてのクラスをダンプし、プログラムの再起動後にそれらをまったく同じ状態にロードする方法を探しています。シリアライズ中!彼は、単一のファイルに複数のクラスとデータを保持できるようにしたいことに注意してください
Ali1S232 2011

2
それは本当に「基本的なプログラミング」の問題だと思います。データをファイルまたはなんらかのストリームに書き込む前に、データをさまざまな形式または構造に変換する(またはシリアル化する)方法を知っていることです。チャンクは階層を追加するために使用できますが、それ以外は単なる実験の問題だと思います。これに対する確実な答えはありません。
njdw
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.