C++ 如何在二进制文件中组织数据?
我试图在一个二进制文件中组织矩阵,但我不太确定如何去做。我已经成功地将2d数组写入二进制文件,并将数据读回,但我担心我只在二进制文件中写入一行,然后将其读回2d数组。但是,再一次,我不能完全确定二进制文件是如何工作的,所以我可能是错的。 我想把我的二进制文件组织成一个数组图表。这可能吗? 如果我解释得不好,我道歉。如果是这样,请留下评论,以便我能更好地说明我正在尝试做什么C++ 如何在二进制文件中组织数据?,c++,arrays,binaryfiles,C++,Arrays,Binaryfiles,我试图在一个二进制文件中组织矩阵,但我不太确定如何去做。我已经成功地将2d数组写入二进制文件,并将数据读回,但我担心我只在二进制文件中写入一行,然后将其读回2d数组。但是,再一次,我不能完全确定二进制文件是如何工作的,所以我可能是错的。 我想把我的二进制文件组织成一个数组图表。这可能吗? 如果我解释得不好,我道歉。如果是这样,请留下评论,以便我能更好地说明我正在尝试做什么 谢谢大家! 这里有一些关于如何简化序列化的建议 对于矩阵,使用普通数组 将数组封装在一个类中,并给它一个看起来像矩阵的接口
谢谢大家! 这里有一些关于如何简化序列化的建议
类MyMatrix{
私人:
std::向量myData;
公众:
MyMatrix(int-nelems);
运算符()(整数行,整数列)(&T);
运算符()(int行,int列)常量(&O);
})
用法:
MyMatrix<int> m(200);
m(row, col) = 27;
...
serialize(m);
MyMatrix m(200);
m(行,列)=27;
...
序列化(m);
序列化将只序列化std::vector(实际上是指向T类型的n个元素的指针)。如果需要,您也可以使用普通的
T*
plusnew
,并且矩阵无法调整大小。您使用二维数组而不是普通的平面数组有什么原因吗?这样统一数据会容易得多。我正在尝试创建一个按程序生成的10X10图块,其中每个索引将包含1或0。你是说如果我组织一维数组的二进制文件,然后像读取二维数组一样读取它们会更容易些?文件是字节数组。这样,所有文件都是二进制文件。碰巧,所谓文本文件中的字节可以直接表示为ASCII字符。您应该将它们与fstream结合使用。@Bartholomew我认为将1D数组封装在与2D数组行为相同的结构中会更容易。换句话说,一种结构,在这种结构中,您可以通过(x,y)坐标在内部使用众所周知的(y*width+x)公式访问数组元素。这样,将数据写入文件要容易得多。如果您的数字占据一个字节以上,则需要考虑字节数。来自小端平台的镜像数据将与大端平台不兼容。
MyMatrix<int> m(200);
m(row, col) = 27;
...
serialize(m);