怎么判断二进制文件是否结束

如何判断二进制文件是否结束

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
   int val[2]={1,101};
   
   ofstream  fio("a",ios::out|ios::binary);
   if(!fio)  return 0;
   for(int i(0);i< 2; ++i)
       fio.write((char*)(val+i),sizeof(int));
    fio.close();
    
    ifstream fin("a",ios::in|ios::binary);
    if(!fin) return 0;
    while(fin)  //     !fin.eof()  这样也不行
     {
         fin.read((char*)val,sizeof(int));
         cout<<*val<<endl;
     }
    fin.close();
   return 0;
}

输出的结果总是 多出一个101:  1    101    101
------解决思路----------------------
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    int val[2] = {1, 101};

    ofstream  fio("a", ios::out 
------解决思路----------------------
 ios::binary);
    if(!fio)  return 0;
    for(int i(0); i < 2; ++i)
        fio.write((char *)(val + i), sizeof(int));
    fio.close();

    ifstream fin("a", ios::in 
------解决思路----------------------
 ios::binary);
    if(!fin) return 0;
    while(!fin.eof())  //     !fin.eof()  这样也不行
    {
        fin.read((char *)val, sizeof(int));
        if (fin.gcount() == sizeof(int))
            cout << *val << endl;
    }
    fin.close();
    return 0;
}