Re: [問題] 物件寫入檔案
: 然後我在主程式上打了一些程式碼
: TruRealation TruRea;
: TruRea.add(Realation(1,12));
: TruRea.add(Realation(2,11));
: TruRea.add(Realation(3,10));
: 然後我要將新增的物件寫入檔案裡,所以void Record()函式我這樣寫
: void TruRealation::Record(){
: ifstream infile(".\\abc.bin");
: infile.open(".\\abc.bin",ios::in | ios::binary);
: for (list<Realation>::iterator i=Load.begin();i!=Load.end();++i){
: ??????????
: }
: }
不好意思,請問一下,後來我的程式碼改成這樣
在輸入檔案的部份
void TruRealation::Record(){
ofstream outfile(".\\abc.bin",ios::out | ios::binary);
if (!outfile){
cout<<"開啟檔案失敗"<<endl;
return;
}
Realation tmp(1,1);
for (list<Realation>::iterator i=Load.begin();i!=Load.end();++i){
cout<<"儲存資料至檔案"<<endl
<<"AID="<<i->AID<<",BID="<<i->BID<<endl;
outfile<<*i;
}
}
在讀取檔案資料的部份
void TruRealation::showdata(){
ifstream infile(".\\abc.bin",ios::in | ios::binary);
if (!infile){
cout<<"檔案開啟失敗"<<endl;
return;
}
Realation tmp2(1,1);
//infile.read(reinterpret_cast<char*>(&tmp2),sizeof(tmp2)*Load.size());
for(int i=0;i<Load.size();++i){
cout<<"讀取資料從檔案"<<endl;
infile>>tmp2;
cout<<"AID="<<tmp2.AID<<",BID="<<tmp2.BID<<endl;
}
}
然後在原來的class內加了兩個friend function
ostream& operator<<(ostream& out,Realation& vRealation){
return out << vRealation.AID <<" "<< vRealation.BID<<" ";
istream& operator>>(istream& in,Realation& vRealation){
return in >> vRealation.AID >> vRealation.BID;
}
以上,結果很順利的可以存取了,但有一個問題
這個方法是參考書上寫的方式,但我不解的是,若用這樣的方式
就只能在class內放置friend function嗎
或是還有其它的方法
因為個人的寫作方式比較傾向於所有東西儘量都在class內完成
儘量不要用到friend......@@
然後上篇的推文中,l大說可以用boost::serialization方式
可以麻煩提供一下寫法嗎
再麻煩各位強者說明一下,謝謝
※ 編輯: tyc5116 來自: 163.18.48.28 (09/04 19:09)
※ 編輯: tyc5116 來自: 163.18.48.28 (09/04 19:10)
推
09/04 20:56, , 1F
09/04 20:56, 1F
→
09/04 20:59, , 2F
09/04 20:59, 2F
→
09/05 10:35, , 3F
09/05 10:35, 3F
→
09/05 21:34, , 4F
09/05 21:34, 4F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章