[英]read and write array of float to file
我在c ++中有一个float数组,我想将其保存到二进制文件(以节省空间),以便以后可以再次读取。 为此,我编写了以下代码来编写数组:
float *zbuffer = new float[viewport[3]*viewport[2]*4];
//.....
//.. populate array
//.....
ofstream zOut(string(outFile).append("_geom.txt", ios::out | ios::binary));
zOut.write(reinterpret_cast<char*>(zBuffer), sizeof(float)*viewport[3] * viewport[2] * 4);
zOut.close();
之后,我立即重新打开文件,以检查数据是否正确保存:
ifstream zIn(string(outFile).append("_geom.txt"), ios::in | ios::binary);
float *chBuffer = new float[viewport[3] * viewport[2] * 4];
zIn.read(reinterpret_cast<char*>(chBuffer), sizeof(float)*viewport[3] * viewport[2] * 4);
zIn.close();
但是,当我检查两个数组的相等性时,我得到了截然不同的值:
for (int i = 0; i < viewport[3]; i++)
{
for (int j = 0; j < viewport[2]; j++)
{
int idx = 4 * (i*viewport[2] + j);
if ((zBuffer[idx] != chBuffer[idx]) || (zBuffer[idx + 1] != chBuffer[idx + 1]) || (zBuffer[idx + 2] != chBuffer[idx + 2])) {
cout << "1: " << zBuffer[idx] << " " << zBuffer[idx + 1] << " " << zBuffer[idx + 2] << endl;
cout << "2: " << chBuffer[idx] << " " << chBuffer[idx + 1] << " " << chBuffer[idx + 2] << endl;
}
}
}
我是错误地读取或写入数据吗? 我读取的数据的转换是否存在任何问题?
只需看这两行:
ofstream zOut(string(outFile).append("_geom.txt", ios::out | ios::binary));
ifstream zIn(string(outFile).append("_geom.txt"), ios::in | ios::binary);
在我看来,第一行中有错字。 也许原意是
ofstream zOut(string(outFile).append("_geom.txt"), ios::out | ios::binary);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.