将 2D 数组写入二进制文件
Writing 2D array to binary file
下面的代码应该将一个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_height
和quad_width
是编译时常量,则可以将嵌套的 std::array 与 C++11 一起使用。
另请参阅此内容。
相关文章:
- 保存/加载大量短数组到二进制文件
- 从二进制文件中读取整数数组
- 无法在二进制文件中存储动态数组
- 将文件信息(字符数组)嵌入到编译的二进制文件中
- Python API用于解析包含数组格式的protobuf数据的二进制文件
- 如何使用QJSONARRAY在QT5(C )中解析JSON文件(数组)
- 二进制字符数组转换为字符串流并从缓冲区弹出
- 从二进制文件读取到数组:前面的任意数字
- 如果在执行过程中替换二进制文件,"const"数组是否驻留在内存中?
- (C++) 如何从要存储在结构数组中的二进制文件中读取.dat信息?
- 将数组保存到二进制文件不起作用 c++
- 在C 中编写二进制INT数组时,然后在MATLAB中读取
- 如何在C++中表示二进制字节数组数据
- 从文件/数组C++聚合数据
- C++中的二进制补码 - 数组下标的类型"int[int]"无效
- 将字符字符串转换为二进制值数组
- 我想要一个递归函数来检查使用二进制搜索数组的顺序
- 在c++中将二进制Char数组转换为整数和双精度数组
- c++从stdin中读取二进制字符数组
- 在二进制 2D 数组中查找唯一行