Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Read/Write Class Objects from/to File in C++

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

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

This article is contributed by Rohit Thapliyal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 


My Personal Notes arrow_drop_up
Last Updated : 24 Jan, 2023
Like Article
Save Article
Similar Reads