C++ 读写FORTRAN和C++;

C++ 读写FORTRAN和C++;,c++,fortran,binaryfiles,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::b

我正在用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;
}
但它不起作用!第二个代码无法读取由第一个代码创建的文件。
感谢您的帮助

file.tellg给出当前位置。打开文件时,位置为0。要确定文件的大小,请先查找到末尾,然后再进行测试。

问题已解决:

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

你怎么知道它不能读取文件?在您显示的代码中,没有任何东西可以检查。“它不工作”不能定义问题。它如何不工作是必需的。此外,您对
新字符
和文件都没有任何错误检查。read(因此您不知道它失败的原因)它不工作是因为它不读取任何数据,还是因为它不读取您期望的数据而不工作。帮帮我们!更多信息!少一点感叹号!它不读取任何数据。它为文件提供零大小!