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

时间:2013-12-22 18:14:09

标签: c++

以下代码应该将二维数组(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();

1 个答案:

答案 0 :(得分:1)

我认为您应该删除

  ofs.open("quads.dat");

语句,因为你已经在前一行(构造函数)给出了文件名。

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

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

另见this