如何在读取数据时处理不同版本的格式

How to handle different versions of format in reading data?

本文关键字:版本 格式 处理 读取 数据      更新时间:2023-10-16

随着软件的更新,输入数据的格式可能会从版本1更改为版本2、版本3等等。软件希望向后兼容。编码时如何处理这些不同的版本?

例如,我有一个类Data,它有一些成员变量。文件中的Read数据用于指定这些成员变量。在新版本中,类Data具有更多的成员变量。为了使back兼容,在读取旧版本数据时,新成员变量具有默认值。如何实施?

在数据文件的标头(1)中添加一个条目,指示其版本。访问文件时,请检查标头中的版本信息,并使用适当的函数集加载数据。

如果数据文件还没有某种类型的头,则应该添加一个。

struct header
{
    char   signature_[16]; // some arbitrary data identifying it as your data file
    int    version_;       // version number
    // ... more data ...
};
header_ hdr;
ReadHeader(inFile, &hdr);
Data* data;
switch(hdr)
{
case 1: data = LoadVersion1Data(inFile); break;
case 2: data = LoadVersion2Data(inFile); break;
case 3: data = LoadVersion3Data(inFile); break;
}

1.头是一个简单的数据块,通常具有已知的固定大小,并位于数据文件的开头