[英]Reading objects from a file in c++
我正在嘗試讀取我先前寫的對象“ CustomerDetails”中的對象(文件中現在只有一個對象)。 read first object
后,我的程序總是突然終止。
我在這里做錯了什么?
ifstream file;
try
{
file.open("CustomerDetails.dat",fstream::in|fstream::binary);
if(file.is_open())
{
while(1)
{
cout<<"Current Position\n"<<file.tellg()<<endl;
file.read((char*)this,sizeof(*this));
if(file.eof()) break;
cout<<"read first object\n";
if(!(this->accountNo).compare(accountNumber)&& this->isDeleted==false)
{
cout<<"Account Found!!\n Current Balance="<<this->balanceAmount<<endl;
}
cout<<"End of loop loop\n";
}
}
else
{
cout<<"Error opening file.\n";
}
file.close();
}
catch(...)
{
cout<<"Exception Caught\n";
}
本質上,這里的想法僅在數據始終按順序存儲在單個塊中的特定情況下才有效。 對於任何甚至稍微復雜的情況,這都是不正確的(特別是如果有字符串,它將永遠無法使用)。
該賦值似乎意味着您應該對輸出流覆蓋>>運算符,然后將類的每個元素獨立地寫入流中,以注明長度或使用分隔符來指示可變長度數據的結束位置。 正如評論中所建議的那樣,這不是一件容易的事。
同樣,反序列化代碼必須從流中逆轉此過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.