我有一个代码,用于写入从机器实时获取浮点数并复制到二进制文件。
WriteToFile(float* buffer, int bufSize )
{
ofstream out;
out.open(m_fileName, ios::app);
if (out )
{
cout<<" Writing file "<<endl;
for(int i=0; i< bufSize; i++)
{
out.precision(6);
out.setf(ios::fixed,ios::floatfield);
out.write( (const char*) &buffer[i], sizeof(float));
cout << buffer[i] << ", ";
}
cout << endl;
posp += bufSize;
out.close();
}
}
这里float * buffer是一个指向数组的指针,该数组从机器中获取数据,而int bufSize是大小(要写入的缓冲区中的总数,比如70个数字)。
稍后将数据读取为浮点数
ifstream fin;
fin.open(m_fileName);
if (fin ))
{
fin.setf(ios::fixed, ios::floatfield);
fin.seekg(posg);
fin.read((char*)buffer,bufSize*sizeof(float));
posg = fin.tellg();
}
fin.close();
代码运行良好,除了读取数字的顺序在读取过程中变得混乱,我假设它已经有一些事情与精度set.i设置精度6写入和没有精度设置为阅读,任何人都可以帮助我同步写入和读取二进制文件的精度