我正在用以下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;
}
但是它不工作!第二个代码不能读取由第一个代码创建的文件。任何帮助,感谢!
文件。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();
}