2016-04-27 58 views
1

我一直在试图写这个到一个文件,但无济于事,我找到了一种方法,我也需要能够读取这个。这里是结构将一个包含另一个向量的结构向量写入二进制文件

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(); 

而且我知道这是错误的,因为当我打开文件时,它是几乎没有大到足以容纳我投入的信息它。 所有帮助表示感谢,提前谢谢

+0

您找到了错误的方法。 – LogicStuff

+0

是的,我想,我刚刚在黑暗中拍摄希望东西棒 – Lansrow

回答

1

一个非常简单的方法是使用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; 
} 

并且对方阅读文件。

+0

谢谢!我会尝试并实现这一点,并取回我的结果 – Lansrow

相关问题