在C ++中从文件读取/写入文件的类对象

iostream标准库有两种方法cin,用于接受来自标准输入流的输入,以及接受cout以将输出打印到标准输出流。在本文中,我们将学习如何将文件中的数据读取到类对象中以及如何将类对象中的数据写入文件中。

在文件中读写数据需要另一个标准的C ++ <fstream>库。fstream的三种主要数据类型是-

  • ifstream-表示输入文件流,并从文件中读取信息。

  • ofstream-表示输出文件流,并将信息写入文件。

  • 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) );
  • 此处,通过调用write函数将类对象Emp_1中存在的数据写入文件Employee.txt。(char *)&Emp_1用于指向对象的开头,sizeof(Emp_1)计算文件中复制的字节数。

file2.read( (char*)&Emp_1, sizeof(Emp1) );
  • 在这里,通过调用读取功能从文件Employee.txt中读取类对象Emp_1中存在的数据。(char *)&Emp_1用于指向对象的开头,sizeof(Emp_1)计算从文件读取的字节数。

关闭档案

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

关闭文件的输入流和输出流。

示例

#include <iostream>
#include <fstream>
using namespace std;
//定义属性的类
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;
   //将此数据写入Employee.txt-
   ofstream file1;
   file1.open("Employee.txt", ios::app);
   file1.write((char*)&Emp_1,sizeof(Emp_1));
   file1.close();
   //读取数据
   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