C++中读取/写入类对象到文件


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

读取和写入文件数据需要另一个标准库 C++ <fstream>。fstream 的三种主要数据类型为:

  • ifstream − 表示输入文件流,并从文件中读取信息。
  • ofstream − 表示输出文件流,并将信息写入文件。
  • fstream − 表示通用文件流,并具有两者的功能。

创建类对象

我们正在使用一个名为 Employee 的类,其 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) );
  • 这里通过调用 write 函数将类对象 Emp_1 中存在的数据写入文件 Employee.txt。(char*)&Emp_1 用于指向对象的开头,sizeof(Emp_1) 计算写入文件中的字节数。

file2.read( (char*)&Emp_1, sizeof(Emp1) );
  • 这里通过调用 read 函数将类对象 Emp_1 中存在的数据从文件 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

更新于: 2023年10月5日

36K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告