gpt4 book ai didi

c++ - 将包含另一个 vector 的结构 vector 写入二进制文件

转载 作者:行者123 更新时间:2023-11-30 05:28:18 24 4
gpt4 key购买 nike

我一直在尝试将其写入文件,但无济于事我找到了一种方法,我还需要能够从中读取。这是结构

struct details
{
float balance=0;
vector<string> history;
string pin;
};
struct customer
{
int vectorID;
string name;
char type;
details detail;
};
vector<customer> accounts;

我现在拥有的是:

ofstream fileBack;
fileBack.open("file.txt", ios::in|ios::binary|ios::trunc);

fileBack.write(reinterpret_cast<char*>(&accounts), accounts.size()*sizeof(accounts));
fileBack.close();

而且我知道这是错误的,因为当我打开文件时,它还不够大,无法包含我放入其中的信息。感谢所有帮助,提前致谢

最佳答案

一个非常简单的方法是使用 Boost Serialization .您需要在每个类中定义一个成员函数来处理序列化,例如:

void details::serialize(Archive & ar, const unsigned int version) {
ar & balance;
ar & history;
ar & pin;
}


void customer::serialize(Archive & ar, const unsigned int version) {
ar & vectorID;
ar & name;
ar & type;
ar & detail;
}

然后当你想添加到文件时,你可以这样做:

std::ofstream ofs("filename", std::ios::binary); // binary file open
....
// save data to archive
{
boost::archive::text_oarchive oa(ofs);
// write class instance to archive
oa << yourCustomerClass;
}

与读取文件相反。

关于c++ - 将包含另一个 vector 的结构 vector 写入二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36900102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com