我無法顯示全部我已經讀取二進制文件內容的矢量的內容。我可以訪問此矢量的各個元素,但不能打印所有這些元素。我的代碼去如下:將二進制文件的內容讀入對象矢量
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
對象到載體。但是,由於我已經添加了從二進制文件中將內容讀入矢量的功能,所以我無法使其工作。
「Account」包含什麼? – Galik
是否是POD?在你的代碼中進行下面的編譯:'static_assert(std :: is_pod :: value,「Account must be POD。」);' –
marcinj
@Galik我很困惑你正在問什麼。它包含7個方法函數,6個數據成員和一個重載的'operator'。 'ostream&operator <<(ostream&os,const Account&acc){os <<「Account(Name:」<< acc.firstName +''+ acc.lastName <<「,Account Number:」<< acc.acc_num << 「)」;返回操作系統} – quantik