C++ 如何将对象向量写入文件?
我编写了一份旅行预订登记申请表。我想把预订的信息写进文件里。一个用于火车旅行,另一个用于飞机旅行。例如,我决定将火车预订放在一个向量中,我想将该向量的内容写入一个文本文件。我仍然要将其他对象添加到该向量中。问题是我没有找到一种方法将向量的内容写入文件。我尝试了下面的方法,我从一个例子中得到了它,但我想它不适合我的情况,因为它不起作用。你能帮我吗C++ 如何将对象向量写入文件?,c++,vector,C++,Vector,我编写了一份旅行预订登记申请表。我想把预订的信息写进文件里。一个用于火车旅行,另一个用于飞机旅行。例如,我决定将火车预订放在一个向量中,我想将该向量的内容写入一个文本文件。我仍然要将其他对象添加到该向量中。问题是我没有找到一种方法将向量的内容写入文件。我尝试了下面的方法,我从一个例子中得到了它,但我想它不适合我的情况,因为它不起作用。你能帮我吗 #include <cstdlib> #include <iostream> #include "Data.h" #includ
#include <cstdlib>
#include <iostream>
#include "Data.h"
#include "Person.h"
#include "Reservation.h"
#include "FlightReservation.h"
#include "TrainReservation.h"
#include <vector>
#include <iterator>
#include <fstream>
using namespace std;
int main(int argc, char** argv) {
Data data(1,1,2020);
Person person("George", "Man");
TrainReservation train(data, person, "common", 100, 50);
Data data2(1,6,2020);
Person person2("Ana", "Woman");
FlightReservation flight(data2, person2, "ABC1180", "50A");
cout<<"Data:\n"<<train.data<<endl;
cout<<"Customer:\n"<<train.getCustomer()<<endl;
cout<<"Train: "<<train.getTrain()<<", vagon: "<<train.getVagon()<<", seat: "<<train.getSeat()<<endl;
cout<<"Data:\n"<<flight.data<<endl;
cout<<"Customer:\n"<<flight.getCustomer()<<endl;
cout<<"Flight: "<<flight.getFlight()<<", seat: "<<flight.getSeat()<<endl;
vector<TrainReservation> v;
v.push_back(train);
fstream f("test.txt", ios::out);
for(vector<FlightReservation>::iterator i = v.begin(); i != v.end() ; ++i)
{
f.write((char *)&(*i),sizeof(*i));
}
f.close();
return 0;
}
#包括
#包括
#包括“Data.h”
#包括“Person.h”
#包括“Reservation.h”
#包括“FlightReservation.h”
#包括“TrainReservation.h”
#包括
#包括
#包括
使用名称空间std;
int main(int argc,字符**argv){
数据(112020);
人(“乔治”,“人”);
列车预定列车(数据,人员,“普通”,100,50);
数据2(162020);;
个人2(“安娜”,“女性”);
航班预订航班(数据2,人员2,“ABC1180”,“50A”);
通常使用二进制I/O( FrWreWe()/Cuff> >)输出C++类的实例是非常不可取的,特别是如果C++类或其任何成员都具有虚函数时,请查阅POD类型(或“标准布局”类型在最近的C++标准中的概念)。有关可安全执行二进制I/O的类型的详细信息。此外,默认情况下,fstream
不会以二进制模式打开,并且对非二进制流使用二进制I/O的效果未定义。请查看序列化。不要尝试使用您不懂的代码。您无法理解它。如果您想要要将一个向量编码为字节流(文件就是这样的),然后决定使用一种编码形式,并编写与这种编码形式转换的代码。