Given a file “Input.txt” in which every line has values same as instance variables of a class.
Read the values into the class’s object and do necessary operations.
Theory :
The data transfer is usually done using '>>' and <<' operators. But if you have a class with 4 data members and want to write all 4 data members from its object directly to a file or vice-versa, we can do that using following syntax : To write object's data members in a file : // Here file_obj is an object of ofstream file_obj.write((char *) & class_obj, sizeof(class_obj)); To read file's data members into an object : // Here file_obj is an object of ifstream file_obj.read((char *) & class_obj, sizeof(class_obj));
Examples:
Input : Input.txt : Michael 19 1806 Kemp 24 2114 Terry 21 2400 Operation : Print the name of the highest rated programmer. Output : Terry
C++
// C++ program to demonstrate read/write of class // objects in C++. #include <iostream> #include <fstream> using namespace std;
// Class to define the properties class Contestant {
public :
// Instance variables
string Name;
int Age, Ratings;
// Function declaration of input() to input info
int input();
// Function declaration of output_highest_rated() to
// extract info from file Data Base
int output_highest_rated();
}; // Function definition of input() to input info int Contestant::input()
{ // Object to write in file
ofstream file_obj;
// Opening file in append mode
file_obj.open( "Input.txt" , ios::app);
// Object of class contestant to input data in file
Contestant obj;
// Feeding appropriate data in variables
string str = "Michael" ;
int age = 18, ratings = 2500;
// Assigning data into object
obj.Name = str;
obj.Age = age;
obj.Ratings = ratings;
// Writing the object's data in file
file_obj.write(( char *)&obj, sizeof (obj));
// Feeding appropriate data in variables
str = "Terry" ;
age = 21;
ratings = 3200;
// Assigning data into object
obj.Name = str;
obj.Age = age;
obj.Ratings = ratings;
// Writing the object's data in file
file_obj.write(( char *)&obj, sizeof (obj));
//close the file
//It's always a good practice to close the file after opening them
file_obj.close();
return 0;
} // Function definition of output_highest_rated() to // extract info from file Data Base int Contestant::output_highest_rated()
{ // Object to read from file
ifstream file_obj;
// Opening file in input mode
file_obj.open( "Input.txt" , ios::in);
// Object of class contestant to input data in file
Contestant obj;
// Reading from file into object "obj"
file_obj.read(( char *)&obj, sizeof (obj));
// max to store maximum ratings
int max = 0;
// Highest_rated stores the name of highest rated contestant
string Highest_rated;
// Checking till we have the feed
while (!file_obj.eof()) {
// Assigning max ratings
if (obj.Ratings > max) {
max = obj.Ratings;
Highest_rated = obj.Name;
}
// Checking further
file_obj.read(( char *)&obj, sizeof (obj));
}
// close the file.
//It's always a good practice to close the file after opening them
file_obj.close();
// Output is the highest rated contestant
cout << Highest_rated;
return 0;
} // Driver code int main()
{ // Creating object of the class
Contestant object;
// Inputting the data
object.input();
// Extracting the max rated contestant
object.output_highest_rated();
return 0;
} |
Output:
Terry