将 2D 数组写入二进制文件

Writing 2D array to binary file

本文关键字:二进制文件 数组 2D      更新时间:2023-10-16

下面的代码应该将一个2D数组(quad_array)写入二进制文件。代码创建文件 (quads.dat),但不向其写入任何内容(0 字节)。

XMFLOAT3 * quad_array;
quad_array = new XMFLOAT3 * [quad_width];
for (unsigned int x = 0; x < quad_width; x++) {
    quad_array[x] = new XMFLOAT3[quad_height];
}
// ... fills quad_array with data...
ofstream ofs("quads.dat", std::ofstream::binary);
ofs.open("quads.dat");
streamsize size = sizeof(XMFLOAT3)*quad_height*quad_width;
ofs.write((char*)&quad_array[0][0], size);
ofs.close();

我认为你应该删除

  ofs.open("quads.dat");

语句,因为您已经在上一行(构造函数)中提供了文件名。

但这还不够。您没有 2D 数组,而是指向数组的指针数组,因此它们在内存中不是连续的。

如果quad_heightquad_width是编译时常量,则可以将嵌套的 std::array 与 C++11 一起使用。

另请参阅此内容。