读写二进制文件-FORTRAN和C ++

时间:2013-03-28 16:39:47

标签: c++ fortran binaryfiles

我正在使用FORTRAN中的以下代码编写二进制文件:

Character(50) S
Real*8 A
A = 25.002  
OPEN(1,file='data.bin', access='stream',action='write') 
WRITE (1) A        
CLOSE(1)

尝试使用C ++中的以下代码阅读:

ifstream::pos_type size;
char * memblock

ifstream file ("data.bin", ios::in|ios::binary|ios::ate);
if (file.is_open())
{
  size = file.tellg();
  memblock = new char [size];
  file.seekg (0, ios::beg);
  file.read (memblock, size);
  file.close();

  delete[] memblock;
}

但它不起作用!第二个代码无法读取第一个代码创建的文件。 任何帮助赞赏!

2 个答案:

答案 0 :(得分:1)

file.tellg给出当前位置。当你打开文件时,位置是0.要对文件的大小进行罚款,首先寻找结束,然后再告诉。

答案 1 :(得分:1)

解决问题:

ifstream file ("data.bin", ios::in|ios::binary);
if (file.is_open())
{     
  double a = 0;
  file.read ((char*)&a,sizeof(double));
  file.close();    
}