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

06 Oct, 2020
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 propertiesclass 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 infoint 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));     return 0;} // Function definition of output_highest_rated() to// extract info from file Data Baseint 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));    }     // Output is the highest rated contestant    cout << Highest_rated;    return 0;} // Driver codeint 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 contribute.geeksforgeeks.org or mail your article to contribute@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. 
zytekaron
cpp-class
cpp-input-output
C++
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Vector in C++ STL
Initialize a vector in C++ (7 different ways)
std::sort() in C++ STL
Bitwise Operators in C/C++
vector erase() and clear() in C++
Substring in C++
unordered_map in C++ STL
Sorting a vector in C++
2D Vector In C++ With User Defined Size
Virtual Function in C++