C++ ifstream seekg Seeks particular person in file

Description

C++ ifstream seekg Seeks particular person in file

#include <fstream>
#include <iostream>
using namespace std;
class person//  ww w.j  a  va  2  s . com
{
   protected:
   char name[80];
   int age;
   public:
   void getData()
   {
      cout << "\n   Enter name: "; cin >> name;
      cout << "   Enter age: "; cin >> age;
   }
   void showData(void)         //display person's data
   {
      cout << "\n   Name: " << name;
      cout << "\n   Age: " << age;
   }
};
int main()
{
   person pers;
   ifstream infile;               //create input file
   infile.open("GROUP.DAT", ios::in | ios::binary);  //open file
   infile.seekg(0, ios::end);     //go to 0 bytes from end
   int endposition = infile.tellg();        //find where we are
   int n = endposition / sizeof(person);    //number of persons
   cout << "\nThere are " << n << " persons in file";
   cout << "\nEnter person number: ";
   cin >> n;
   int position = (n-1) * sizeof(person);  //number times size
   infile.seekg(position);        //bytes from start
   //read one person
   infile.read( reinterpret_cast<char*>(&pers), sizeof(pers) );
   pers.showData();
   cout << endl;
   return 0;
}



PreviousNext

Related