我正在使用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;
}
但它不起作用!第二个代码无法读取第一个代码创建的文件。 任何帮助赞赏!
答案 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();
}