在二进制文件中写入和读取时,设置浮点数的精度相同

时间:2014-05-26 20:50:24

标签: c++ iostream floating-point-precision

我有一个代码,用于写入从机器实时获取浮点数并复制到二进制文件。

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写入和没有精度设置为阅读,任何人都可以帮助我同步写入和读取二进制文件的精度

0 个答案:

没有答案