将二进制文件的内容读入对象向量

时间:2017-06-15 21:05:19

标签: c++ vector

我无法显示所有我已经读取二进制文件内容的向量内容。我可以访问此向量的各个元素,但无法打印所有这些元素。我的代码如下:

BankSystem::BankSystem(string file_name) {
    vec_acc.reserve(10);
    fstream acc_file(file_name, ios::in | ios::out | ios::binary);
    for(int i=0; i<10; i++) {
        acc_file.seekg(sizeof(Account)*i);
        acc_file.read((char*)&vec_acc[i], sizeof(Account));
    }
    acc_file.close();
}

所以这个构造函数假设将二进制文件的内容读入Account向量。

我知道数据已正确读入Account向量,因为我可以对它们执行getNamegetBalance等方法功能。但是,当我尝试显示向量的内容时:

void BankSystem::showAccounts() {
    std::copy(vec_acc.begin(), vec_acc.end(), std::ostream_iterator<Account>
    (cout, " "));
}

当我将Account个对象推入向量时,这已经有效了。但是,我无法让它工作,因为我已经添加了从二进制文件中将内容读入向量的功能。

1 个答案:

答案 0 :(得分:1)

您执行vec_acc.reserve(10);,但vec_acc.size()仍为0,而您的vec_acc.begin() == vec_acc.end()

但即使您将其更改为.resize(10),也可能会出现以这种方式序列化非POD类型对象的问题。

相关问题