如何在读取数据时处理不同版本的格式
How to handle different versions of format in reading data?
随着软件的更新,输入数据的格式可能会从版本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.头是一个简单的数据块,通常具有已知的固定大小,并位于数据文件的开头
相关文章:
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在openssl-ecc中获取十六进制格式的私钥
- 导入库可以跨dll版本工作吗
- 将"打开的CV图像"中的"颜色"转换为整数格式
- TDateTime格式在C++Builder中不会更改
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 检查不带转换的扫描格式
- 在clang++预处理器中确定gcc工具链版本
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- 是否可以从格式字符串中检索"width"
- 码头化的C++应用程序是否向后兼容早期的内核版本
- clang格式:宏的缩进
- clang格式:禁用排序包含
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 将RGB图像保存为PPM格式
- 询问在设计我的手臂模拟器功能表示格式1
- 以具有多个点(版本号)的格式将数字强制转换(转换)为字符串
- BeautifulSoup的C / CPP版本,特别是在处理格式错误的HTML方面
- 如何在读取数据时处理不同版本的格式