我无法显示所有我已经读取二进制文件内容的向量内容。我可以访问此向量的各个元素,但无法打印所有这些元素。我的代码如下:
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
向量,因为我可以对它们执行getName
或getBalance
等方法功能。但是,当我尝试显示向量的内容时:
void BankSystem::showAccounts() {
std::copy(vec_acc.begin(), vec_acc.end(), std::ostream_iterator<Account>
(cout, " "));
}
当我将Account
个对象推入向量时,这已经有效了。但是,我无法让它工作,因为我已经添加了从二进制文件中将内容读入向量的功能。
答案 0 :(得分:1)
您执行vec_acc.reserve(10);
,但vec_acc.size()
仍为0,而您的vec_acc.begin() == vec_acc.end()
。
但即使您将其更改为.resize(10)
,也可能会出现以这种方式序列化非POD类型对象的问题。