我在C ++中有一些代码将结构写入文件。结构的格式是:
struct dataHeader
{
int headerID;
int numberOfDataLines;
};
struct data
{
double id;
double type;
char[100] name;
char[100] yyy;
};
现在,这两个结构总是成对写入,文件中包含超过50000个结构。
我的问题是有没有办法更有效地做到这一点?文件大小是我主要关注的问题。
编辑: 当前代码是循环中的简单fwrite(Psuedo-code):
while(dataBlock.Next())
{
fwrite(&_dataHeader, sizeof(dataHeader), 1, fpbinary);
while( dataLine.Next())
{
fwrite(&_data[i], sizeof(data), 1, fpbinary);
}
}
感谢。
答案 0 :(得分:2)
如果数据具有相似性,则可以通过对数据进行分组来降低数据存储要求。例如,您可以准备一个“名称”或“yyy”值的列表,并将您的数据写入组中,使得首先是名称为“Bob”的数据值,然后是“Josh”。
如果您的所有数据都是唯一的,那么您唯一的选择就是在写入文件之前压缩二进制数据,并在读取之后将其解压缩。我建议你使用QuickLZ,这对压缩和解压缩来说非常快。
答案 1 :(得分:1)
如果时间要求不是很高,您可以尝试压缩文件的内容。