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
广告