每个应用程序都有自己的自定义二进制文件格式(例如.mpq,.wad)。最重要的是,它通常是压缩的。
所以,我的问题是,你如何巧妙地 /巧妙地布局文件的二进制内容。你有一个像目前结构的“目录”吗?将所有内容转储到一个文件中会更好吗?
所以说你有一个Shapes
的数组,并且在每个Shape
中都是变形的顶点数据(所以顶点数据已经从它最初加载的文件中改变了,所以它应该重新保存)。
class Shape
{
vector<Vertex> verts ;
} ;
class Sphere : public Shape { } ; // ...more geometric shapes (Tet, Cube) are defined..
class Model : public Shape { } ; // general model "Shape" loaded from file
vector<Shape*> shapes ; // save me! contents are mix of Model, Sphere, Tet..
// each with variable number of verts
答案 0 :(得分:7)
我最喜欢的关于文件格式主题的文章是http://www.fadden.com/techmisc/file-formats.htm。
除此之外,它可能归结为您存储的数据类型以及数据的使用方式(主要是通过网络传输吗?寻求访问权限有多重要?等等......)。 / p>
从那篇文章开始;如果您已经拥有需要设计的格式,它可能有助于明确您的想法。
答案 1 :(得分:1)
简而言之 - 如果您只需要序列化,这意味着您将从流中读取和写入流,那么您可以在此处轻松使用并按成员发出您的scructs成员,或者使用任何序列化库。 ,从CArchive to
....无论你看到什么花哨。
如果没有,您将需要直接访问文件中的数据,然后......您将使用您的要求,他们将通过一些技巧告诉您文件的布局是什么具有
是的,要广泛讨论这里的话题。例如,
我需要为我的软件提供缩略图数据库。每个缩略图都有一个时间戳,我知道它们的大小不同。要求是:
是的,要求在这里很简单,但它们代表了它们。
我创建了两个文件,一个带索引,另一个带图片。
存储:用图像附加数据文件,在数据文件中附加带有图像索引的索引文件。
读取:使用简单索引在索引中查找索引(索引为(timestamp-timestamp_start)/15
)。使用该索引来获取图像数据。