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

しかし、うまくいきません!2 番目のコードは、最初のコードで作成されたファイルを読み取ることができません。どんな助けでも大歓迎です!

4

2 に答える 2

1

file.tellg は現在の位置を示します。ファイルを開くと、位置は 0 です。ファイルのサイズを細かくするには、最初に最後までシークしてから、tellg を実行します。

于 2013-03-28T17:53:12.863 に答える
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 に答える