Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 파일에서 클래스 개체 읽기/쓰기

<시간/>

iostream 표준 라이브러리에는 표준 입력 스트림의 입력을 받아들이는 cin과 표준 출력 스트림으로 출력을 인쇄하는 cout의 두 가지 메소드가 있습니다. 이 기사에서는 파일에서 클래스 개체로 데이터를 읽는 방법과 클래스 개체 tofile에 데이터를 쓰는 방법을 배웁니다.

파일에서 데이터를 읽고 쓰려면 C++ 의 또 다른 표준 라이브러리가 필요합니다. fstream의 세 가지 주요 데이터 유형은 -

  • ifstream - 입력 파일 스트림을 나타내며 파일에서 정보를 읽습니다.
  • 오프스트림 - 출력 파일 스트림을 나타내며 파일에 정보를 씁니다.
  • fstream − 일반 파일 스트림을 나타내며 두 ​​가지 기능을 모두 갖습니다.

클래스 객체 생성

Name, Employee_ID 및 Salary가 있는 Employee 클래스를 공개 데이터 멤버로 사용하고 있습니다.

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 클래스 개체에 있는 데이터는 write 함수를 호출하여 Employee.txt 파일에 기록됩니다. (char*)&Emp_1은 객체의 시작점을 가리키고 sizeof(Emp_1)는 파일에 복사된 바이트 수를 계산하는 데 사용됩니다.

file2.read( (char*)&Emp_1, sizeof(Emp1) );
  • 여기서 Emp_1 클래스 개체에 있는 데이터는read 함수를 호출하여 Employee.txt 파일에서 읽습니다. (char*)&Emp_1은 객체의 시작을 가리키고 sizeof(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