在执行期间将大型多维数组读取和写入二进制文件并返回数组?

Posted

技术标签:

【中文标题】在执行期间将大型多维数组读取和写入二进制文件并返回数组?【英文标题】:Reading and Writing a large multi-dimensional array to binary file and back into array during execution? 【发布时间】:2013-11-18 14:35:09 【问题描述】:

我有一个大的多维数组: 浮动大表[32][256][128][3]

有没有办法在 C++ 中将此数组写入二进制文件并轻松将其读回数组?

在 VS2013 中,当我在头文件中有数据数组时(这不是很好的形式) 但得到一个: 致命错误 C1060:编译器堆空间不足

所以我认为阅读和阅读是要走的路。

我是一名 python 程序员,所以我对 C++ 比较陌生

【问题讨论】:

是的,我想这很容易。您无法解决其实现的哪一部分? (读作:如果您需要帮助,请先尝试自己的帮助,然后带着代码和具体问题来这里)。 尝试搜索名为...的函数...嗯,我不知道...也许readwrite 【参考方案1】:

使用 fwrite() 函数一次性写入整个数组:

FILE* pFile = fopen("filename", "wb");
fwrite(largetable, sizeof(largetable), 1, pFile);
fclose(pFile);

回读:

FILE* pFile = fopen("filename", "rb");
fread(largetable, sizeof(largetable), 1, pFile);
fclose(pFile);

【讨论】:

这一切都很好,有没有办法添加压缩也 BIN 文件仍然很大? 你也能压缩一下吗? 使用可以使用压缩库(例如 zlib)并在循环中传递大缓冲区的部分。由于您现在将 2D 数组视为简单的 1D 缓冲区,因此它与压缩任何其他数据没有什么不同。

以上是关于在执行期间将大型多维数组读取和写入二进制文件并返回数组?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 学习笔记:高级教程:多维数组,日期,文件打开/读取,创建/写入,上传

如何将多维数组写入文本文件?

从文本文件读取并写入二进制或十六进制文件

java 中简述使用流进行读写文本文件的步骤?

IO_RandomAccessFile

Java I/O---RandomAccessFile类(随机访问文件的读取和写入)