作者pziyout (pziyout)
看板C_and_CPP
標題Re: [問題] 關於C++的檔案處理
時間Wed Nov 20 13:53:32 2013
※ 引述《jack710619 (呵呵呵)》之銘言:
: Cinventory inventory; //Cinventory class物件宣告
: deque<Cinventory> dq_inventory; //double-ended queue宣告
: string itemName;
: int itemPrice,itemNumber;
: char junk[1000];
: ifstream fileInput("inventory.txt",ios::in);
: getline(junk,1000,'\n'); //將開頭兩行讀掉,為了不跟需要的資料搞混
: getline(junk,1000,'\n'); //手上的書告訴我可以讀取999個字元到junk
: //,或者是讀到\n就結束
: while(!fileInput.eof()) //判別是否讀到檔案的尾端
: {
: fileInput >> itemName;
: fileInput >> itemPrice;
: fileInput >> itemNumber;
: inventory.setInventory(itemName //之前忘記打上來
: ,itemPricee,itemNumber); //現在補上
: dq_inventory.push_back(inventory);
: }
: 補充說明(Supplement):
其實應該為 Cinventory 設計輸入運算子 :
istream& operator>> ( istream& in , Cinventory& inventory ) {
string itemName ;
int itemPrice , itemNumber ;
if ( in >> itemName >> itemPrice >> itemNumber ) {
inventory.setInventory(itemName,itemPrice,itemNumber) ;
}
return in ;
}
主函式:
...
Cinventory inventory ;
while ( fileInput >> inventory ) {
dp_inventory.push_back(inventory) ;
}
這樣程式會比較簡潔。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.25.21
→ Feis:多載運算子還要考量泛用性,我持保留態度 11/20 14:00
推 jack710619:我可以問一下為何要做這個多載嗎? 11/21 13:44