Ex9_9.cpp
上传用户:wuzhousb
上传日期:2022-07-12
资源大小:380k
文件大小:2k
源码类别:

书籍源码

开发平台:

Visual C++

  1. //【例9.9】文本式数据文件的创建与读取数据。
  2. #include<fstream>
  3. #include<iostream>
  4. #include<iomanip>
  5. #include<string>
  6. using namespace std;
  7. class inventory{
  8. string Description;
  9. string No;
  10. int Quantity;
  11. double Cost;
  12. double Retail;
  13. public:
  14. inventory(string="#",string="0",int=0,double=0,double=0);
  15. friend ostream&operator<<(ostream&dest,inventory&iv);//重载插入运算符
  16. friend istream&operator>>(istream&sour,inventory&iv);//重载提取运算符
  17. };     //流类作为形式参数必须是引用
  18. inventory::inventory(string des,string no,int quan,double cost,double ret){
  19. Description=des;
  20. No=no;
  21. Quantity=quan;
  22. Cost=cost;
  23. Retail=ret;
  24. }
  25. ostream &operator<<(ostream&dest,inventory&iv){
  26. dest<<left<<setw(20)<<iv.Description<<setw(10)<<iv.No;
  27. dest<<right<<setw(10)<<iv.Quantity<<setw(10)<<iv.Cost<<setw(10)<<iv.Retail<<endl;
  28. return dest;
  29. }//写入文件是自动把数转为数字串后写入
  30. istream&operator>>(istream&sour,inventory&iv){
  31. sour>>iv.Description>>iv.No>>iv.Quantity>>iv.Cost>>iv.Retail;
  32. return sour;
  33. }//从文件读出是自动把数字串转为数读出,函数体内>>功能不变
  34. int main(){
  35. inventory car1("夏利2000","805637928",156,80000,105000),car2;
  36. inventory motor1("金城125","93612575",302,10000,13000),motor2;
  37. ofstream destfile("d:\Ex9_9.data");
  38. destfile<<car1<<motor1;//注意ofstream是ostream的派生类
  39. destfile.close();
  40. cout<<car1;
  41. cout<<motor1;
  42. cout<<car2;
  43. cout<<motor2;
  44. ifstream sourfile("d:\Ex9_9.data");//这样分两次打开,可避免读文件时,误改了源文件
  45. sourfile>>car2>>motor2;
  46. sourfile.close();
  47. cout<<car2;
  48. cout<<motor2;
  49. return 0;
  50. }