下面是我的超級市場的結算和股票編輯程序的基本結構代碼 類:友元函數如何讀取和寫入二進制文件在C從/對象++正確
class Admin
{
public:
admin();
private:
int Pid;
char name[20];
double quant;
double price;
double disc;
double net_price;
friend istream &read(istream&, Admin&);
friend ostream &show(ostream&, const Admin);
};
istream &read(istream&, Admin&);
ostream &show(ostream&, const Admin);
定義:
istream &read(istream &is, Admin &commodity)
{
double dis;
fflush(stdin);
is>>commodity.Pid;
is.getline(commodity.name,30);
is>>commodity.quant
>>commodity.price
>>commodity.disc;
dis=grs_pr*(commodity.disc/100);
commodity.net_price=grs_pr-dis;
return is;
}
ostream &show(ostream &os, const Admin thing)
{
os << thing.name <<" " << thing.quant <<" "
<< thing.price <<" " << thing.disc <<" "
<< thing.net_price << endl;
return os;
}
主要功能:
int main()
{
admin item;
while(read(cin,item)
{
ofstream file;
file.open("Stock.dat",ios::binary | ios::app);
file.write(reinterpret_cast<const char*>(&item),sizeof(Admin));
}
ifstream readFile("Stock.dat",ios::in|ios::binary);
while(!readFile.eof())
{
readFile.read(reinterpret_cast<char*> (&item),sizeof(Admin));
Admin readedItem;
read(readFile,readedItem); /*i have used read and show function to watch the values that are read by readFile but every time show function output some five exponential values like 5.23689e-301*/
show(cout,readedItem);
}
return 0;
}
請告訴我什麼的是錯誤的bove代碼,我應該怎麼做才能糾正它, 我的動機是從創建的文件中讀取數據,並通過用戶提及產品ID來更改或編輯要選擇的數據,請幫助我如何達到這個功能。
什麼* *具體的問題你面對? – 2013-03-23 09:53:55
@n.m.my問題是我無法從文件 – Udit 2013-03-23 09:58:18
中讀取數據(對象)「我無法做到這一點或那個」不是特定的。 「我得到這個錯誤(粘貼錯誤的文本)」是。 「我希望程序打印FOO,但它打印BAR」是。 – 2013-03-23 10:06:16