C ++将struct对象读/写到文件中

时间:2015-11-13 18:07:58

标签: c++ file vector struct

所以我编写了一个程序,我可以在其中输入4个值,包括名字,姓氏,身高和签名。我将所有值存储在Vector中,但现在我想学习如何从矢量中获取值并将它们存储在文件中,然后从文件中读取并存储回矢量。

vector<Data> dataVector;
struct Data info;
info.fname = "Testname";
info.lname = "Johnson";
info.signature = "test123";
info.height = 1.80;
dataVector.push_back(info);

代码看起来像这样我还没有发现将结构的对象存储到文件中所以我要求社区提供一些帮助。

2 个答案:

答案 0 :(得分:2)

您应该为您的结构提供一种将其写入流的方法:

struct Data
{
    // various things
    void write_to(ostream& output)
    {
        output << fname << "\n";
        output << lname << "\n";
        // and others
    }
    void read_from(istream& input)
    {
        input >> info.fname;
        input >> info.lname;
        // and others
    }
};

或提供两个独立的功能来完成这项工作,如下:

ostream& write(ostream& output, const Data& data)
{
    //like above
}
// and also read

或者,更好的是,重载<<>>运算符:

ostream& operator<<(const Data& data)
{
    //like above
}
// you also have to overload >>

或者,更好的是,使用提供此类功能的现有库,如Boost。

最后一个选项有很多优点:你不必考虑如何在文件中分离struct的字段,如何在同一个文件中保存更多实例,在重构或修改时你必须做更少的工作结构

答案 1 :(得分:1)

不要重新发明轮子:使用Boost serialization库。