📄 ex9_11.cpp
字号:
#include<fstream.h> //<fstream.h>包含<iostream.h>
#include<string.h>
#include<iomanip.h>
class inventory{
char Description[20];
char No[10];
int Quantity;
double Cost;
double Retail;
public:
inventory(char* ="#",char* ="0",int =0,double =0,double =0);
void display();
Bdatatofile(fstream&dist);//这里直接用文件流类
Bdatafromfile(fstream&dist);
};
inventory::inventory(char *des,char *no,int quan,double cost,double ret){
strcpy(Description,des);
strcpy(No,no);
Quantity=quan;
Cost=cost;
Retail=ret;
}
void inventory::display(){
cout.setf(ios::left);
cout<<setw(20)<<Description<<setw(10)<<No;
cout.unsetf(ios::left);//要改为右对齐,先清左对齐
cout.setf(ios::right);
cout<<setw(10)<<Quantity<<setw(10)<<Cost<<setw(10)<<Retail<<endl;
}
inventory::Bdatatofile(fstream&dist){
dist.write(Description,20);
dist.write(No,10);
dist.write((char*)&Quantity,sizeof(int));
dist.write((char*)&Cost,sizeof(double));
dist.write((char*)&Retail,sizeof(double));
}
inventory::Bdatafromfile(fstream&sour){
sour.read(Description,20);
sour.read(No,10);
sour.read((char*)&Quantity,sizeof(int));
sour.read((char*)&Cost,sizeof(double));
sour.read((char*)&Retail,sizeof(double));
}//由此可见读和写是完全对称的过程,次序决不能错
void main(){
inventory car1("夏利2000","805637928",156,80000,105000),car2;
inventory motor1("金城125","93612575",302,10000,13000),motor2;
cout<<"对象car1:"<<endl;
car1.display();
cout<<"对象motor1:"<<endl;
motor1.display();
cout<<"对象car2:"<<endl;
car2.display();
cout<<"对象motor2:"<<endl;
motor2.display();
fstream datafile("d:\\Ex9_11.data",ios::in|ios::out|ios::binary);//打开输入输出文件
car1.Bdatatofile(datafile);//保存对象
motor1.Bdatatofile(datafile);
datafile.seekg(50,ios::beg);//先重写motor2
motor2.Bdatafromfile(datafile);
datafile.seekg(ios::beg);//后重写car2
car2.Bdatafromfile(datafile);
cout<<"对象car2:"<<endl;
car2.display();
cout<<"对象motor2:"<<endl;
motor2.display();
datafile.close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -