Dado un archivo «Input.txt» en el que cada línea tiene valores iguales a las variables de instancia de una clase.
Lea los valores en el objeto de la clase y realice las operaciones necesarias.
Teoría :
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));
Ejemplos:
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)); 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)); } // 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; }
Producción:
Terry
Este artículo es una contribución de Rohit Thapliyal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA