ex9_9.cpp

来自「纯粹是学习专用~」· C++ 代码 · 共 55 行

CPP
55
字号
#include<fstream.h>
#include<iomanip.h>
#include<string.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(ostream&dist);
	friend ostream&operator<<(ostream&dist,inventory&iv);//重载插入运算符
	friend istream&operator>>(istream&sour,inventory&iv);//重载提取运算符
};
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(ostream&dist){//
	dist.setf(ios::left);
	dist<<setw(20)<<Description<<setw(10)<<No;
	cout.unsetf(ios::left);//要改为右对齐,先清左对齐
	dist.setf(ios::right);
	dist<<setw(10)<<Quantity<<setw(10)<<Cost<<setw(10)<<Retail<<endl;
}//显示时是把浮点数转为数字串后显示,函数体内<<功能不变
ostream &operator<<(ostream&dist,inventory&iv){
	iv.display(dist);
	return dist;
}//写入文件是把数转为数字串后写入
istream&operator>>(istream&sour,inventory&iv){
	sour>>iv.Description>>iv.No>>iv.Quantity>>iv.Cost>>iv.Retail;
	return sour;
}//从文件读出是把数字串转为数读出,函数体内>>功能不变
void main(){
	inventory car1("夏利2000","805637928",156,80000,105000),car2;
	inventory motor1("金城125","93612575",302,10000,13000),motor2;
	ofstream distfile("d:\\Ex9_9.data");
	distfile<<car1<<motor1;//注意ofstream是ostream的派生类
	distfile.close();
	car1.display(cout);
	motor1.display(cout);
	car2.display(cout);
	motor2.display(cout);
	ifstream sourfile("d:\\Ex9_9.data");//这样分两次打开,可避免读文件时,误改了源文件
	sourfile>>car2>>motor2;
	sourfile.close();
	car2.display(cout);
	motor2.display(cout);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?