首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >读取-将大型数据写入C++中的自定义二进制文件

读取-将大型数据写入C++中的自定义二进制文件
EN

Stack Overflow用户
提问于 2014-02-13 21:15:00
回答 2查看 465关注 0票数 1

我在C++中有一些代码可以将结构写到文件中。该结构的格式为:

代码语言:javascript
复制
     struct dataHeader
     {
      int headerID;
      int numberOfDataLines;
      };

     struct data
     {
       double id;
       double type;
       char[100] name;
       char[100] yyy;
      };

现在,这两个结构总是成对编写的,一个文件包含超过50000个这样的对。

我的问题是,有没有更有效的方法来做这件事?文件大小是我最关心的问题。

编辑:当前代码是一个循环中的简单fwrite (Psuedo- code ):

代码语言:javascript
复制
   while(dataBlock.Next())
   {
          fwrite(&_dataHeader, sizeof(dataHeader), 1, fpbinary); 

          while( dataLine.Next())
          {
            fwrite(&_data[i], sizeof(data), 1, fpbinary); 
          }  
   }

谢谢。

EN

Stack Overflow用户

发布于 2014-02-13 21:19:50

如果数据有相似之处,您可以通过对数据进行分组来减少数据存储需求。例如,您可以准备一个"name“或"yyy”值的列表,并将您的数据分组写入,以便首先将数据值命名为"Bob“,然后是"Josh”。

如果您的所有数据都是唯一的,那么留给您的唯一选择就是在将二进制数据写入文件之前对其进行压缩,并在读取后将其解压缩。我建议你使用QuickLZ,它的压缩和解压缩速度非常快。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21755314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档