Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

อ่าน/เขียนคลาสอ็อบเจ็กต์จาก/ไปยังไฟล์ใน C++


ไลบรารีมาตรฐาน iostream มีสองวิธี cin เพื่อยอมรับอินพุตจากสตรีมอินพุตมาตรฐาน และ cout เพื่อพิมพ์เอาต์พุตไปยังเอาต์พุตสตรีมมาตรฐาน ในบทความนี้ เราจะเรียนรู้วิธีอ่านข้อมูลจากไฟล์ไปยังอ็อบเจกต์ของคลาสและวิธีเขียนข้อมูลในอ็อบเจกต์คลาสไปยังไฟล์

การอ่านและเขียนข้อมูลเข้าและออกจากไฟล์ต้องใช้ไลบรารีมาตรฐานอื่นของ C++ ข้อมูลหลักสามประเภทของ fstream คือ −

  • ifstream − แสดงถึงสตรีมไฟล์อินพุตและอ่านข้อมูลจากไฟล์
  • ของสตรีม − แสดงถึงสตรีมไฟล์เอาต์พุตและเขียนข้อมูลไปยังไฟล์
  • สตรีม − แสดงถึงสตรีมไฟล์ทั่วไปและมีความสามารถทั้งสองอย่าง

การสร้างคลาสอ็อบเจ็กต์

เรากำลังนำคลาส Employee with Name, Employee_ID และ Salary มาเป็นสมาชิกข้อมูลสาธารณะ

class Employee {
   public:
      char Name[];
      long Employee_ID;
      int Salary;
} ;
Employee Emp_1;
Emp_1.Name=”Jhonson”;
Emp_1.Employee_ID=212020;
Emp_1.Salary=11000;

การสร้างวัตถุไฟล์

ไวยากรณ์

fstream/ofstream/ifstream object_name;
void open(const char *filename, ios::openmode);
ofstream file1;
file1.open( “Employee.txt”, ios::app );
  • ที่นี่ file1 เป็นอ็อบเจ็กต์ที่ใช้เปิดไฟล์ Employee.txt ในโหมดผนวก (เนื้อหาใหม่จะถูกต่อท้าย) ประเภทของอ็อบเจกต์ file1 เป็น ofstream ซึ่งหมายความว่าเราสามารถเขียนลงใน Employee.txt ได้

ifstream file2;
file2.open( “Employee.txt”, ios::in );
  • ที่นี่ file2 เป็นวัตถุที่ใช้เปิดไฟล์ Employee.txt ในโหมดป้อนข้อมูลเพื่ออ่านเนื้อหา ประเภทของวัตถุ file1 คือ ifstream ซึ่งหมายความว่าเราสามารถอ่านข้อมูลจาก Employee.txt เท่านั้น

การเขียนและการอ่านวัตถุของชั้นเรียน

file1.write( (char*)&Emp_1, sizeof(Emp1) );
  • ข้อมูลที่มีอยู่ในคลาสอ็อบเจ็กต์ Emp_1 นี้ถูกเขียนไปยังไฟล์ Employee.txt โดยเรียกใช้ฟังก์ชันการเขียน (char*)&Emp_1 ใช้เพื่อชี้ไปที่จุดเริ่มต้นของวัตถุ และ sizeof(Emp_1) จะคำนวณจำนวนไบต์ที่คัดลอกในไฟล์

file2.read( (char*)&Emp_1, sizeof(Emp1) );
  • ข้อมูลที่มีอยู่ในคลาสอ็อบเจ็กต์ Emp_1 นี้ถูกอ่านจากไฟล์ Employee.txt โดยเรียกใช้ฟังก์ชันการอ่าน (char*)&Emp_1 ใช้เพื่อชี้ไปที่จุดเริ่มต้นของอ็อบเจ็กต์ andsizeof(Emp_1) คำนวณจำนวนไบต์ที่อ่านจากไฟล์

ปิดไฟล์

file1.close();
file2.close();

เพื่อปิดสตรีมอินพุตและเอาต์พุตสตรีมของไฟล์

ตัวอย่าง

#include <iostream>
#include <fstream>
using namespace std;
// Class to define the properties
class Employee {
public:
   string Name;
   int Employee_ID;
   int Salary;
};
int main(){
   Employee Emp_1;
   Emp_1.Name="John";
   Emp_1.Employee_ID=2121;
   Emp_1.Salary=11000;
   //Wriring this data to Employee.txt
   ofstream file1;
   file1.open("Employee.txt", ios::app);
   file1.write((char*)&Emp_1,sizeof(Emp_1));
   file1.close();
   //Reading data from EMployee.txt
   ifstream file2;
   file2.open("Employee.txt",ios::in);
   file2.seekg(0);
   file2.read((char*)&Emp_1,sizeof(Emp_1));
   printf("\nName :%s",Emp_1.Name);
   printf("\nEmployee ID :%d",Emp_1.Employee_ID);
   printf("\nSalary :%d",Emp_1.Salary);
   file2.close();
   return 0;
}

ผลลัพธ์

Name: John
Employee ID: 2121
Salary: 11000