我需要在二进制文件中保存结构的向量,并在程序重新启动时获取此数据。
struct produc{
string nanme;
float price;
int id;
int idp;
};
vector <produc> products;
scanf("%s",des.c_str());
scanf("%d",&cod);
scanf("%d",&prov);
scanf("%f",&price);
produc pr;
pr.name = des.c_str();
pr.price=precio;
pr.id=cod;
pr.idp=prov;
products.push_back(pr);
这是我要求新数据并放置矢量的方式,然后我只使用for来显示信息。
int l = products.size();
produc pr;
for(int i=0;i<l;i++)
{
pr = productos[i];
cout << "\t Code : " << pr.id << endl;
cout << "\t Product : " << pr.nombre << endl;
cout << "\t Prov Code. : " << pr.idp << endl;
cout << "\t Priceo : " << pr.precio << endl << endl;
}
我想将此向量保存在二进制文件中,如果我关闭程序将其恢复并将其放在向量上。我正在关注这篇文章的答案,但我很挣扎,不确定如何实现它How to read / write a struct in Binary Files?
编辑。
我实际上尝试单独编写/读取我的结构,但我想知道是否可以选择保存整个向量。无论哪种方式,我如何做它做工作因为当我尝试回读时我得到一个错误:分段错误(核心转储) 这就是我写的方式:
ofstream fichero("produts.data", ios::app | ios::binary);
if(!fichero) {
cout << "Can't open";
}
fichero.write((char *) &pr, sizeof(produc));
fichero.close();
读:
ifstream fichero("produts.data", ios::in | ios::binary);
if(!fichero){
cout << "Can't open";
exit(0);
}
fichero.read((char *)&pr,sizeof(produc));
fichero.close();