以下代码应该将二维数组(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();
答案 0 :(得分:1)
我认为您应该删除
ofs.open("quads.dat");
语句,因为你已经在前一行(构造函数)给出了文件名。
但这还不够。你没有2D数组,但是有一个指向数组的指针数组,因此它们在内存中不是连续的。
如果quad_height
和quad_width
是编译时常量,则可以将嵌套std::array与C++11一起使用。
另见this。