1

我在 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;
}

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

4

2 回答 2

1

问题解决了:

ifstream file ("data.bin", ios::in|ios::binary);
if (file.is_open())
{     
  double a = 0;
  file.read ((char*)&a,sizeof(double));
  file.close();    
}
于 2013-03-29T00:40:26.163 回答
1

file.tellg 给出当前位置。当你打开文件时,位置是0。要对文件大小进行微调,首先寻找到最后,然后执行tellg。

于 2013-03-28T17:53:12.863 回答