1、输入输出流运算符重载
例:重载输出运算符
#include<iostream.h>
class coord
{
public:
int x,y;
coord(){x=0;y=0;} //默认构造函数
coord(int i,int j){x=i;y=j}//有参数的构造函数
}
ostream&operator<<(ostream&stream,coord ob)
{//输出运算符重载
stream<<ob.x<<","<<ob.y<<endl;
return stream;
}
void main()
{
coord a(5,6),b(10,34);
cout<<a<<b;
}
重载输入运算符和上面也差不多
2、文件流
例1:源文件拷贝到目的文件
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
void main()
{
char filename1[256],filename2[256];
cout<<"input source name:"<<endl;
cin>>filename1;
cout<<"input target name:"<<endl;
cin>>filename2;
ifstream infile(filename1);//读文件,filename1的文件中的数据
ofstream outfile(filename2);//输出文件,创建一个文件
if(!infile)
{//判断文件是否打开成功
cout<<"can't open"<<filename1<<endl;
exit(1);
}
if(!outfile)
{//判断文件是否打开成功
cout<<"can't open"<<filename2<<endl;
exit(2);
}
char ch;
while(infile.get(ch))//从filename1中读取文件中数据
outfile.put(ch);//把读取到的数据输出至filename2中
infile.close();
outfile.close();
}
例2:求文件中数列的平均数
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
void main()
{
float sum=0,temp;
int count=0;
ifstream infile("data.txt");//读文件
if(!infile)//是否读取成功
{cout<<"read error"<<endl;exit(1);}
while(infile>>temp)//读文件中数列
{
sum+=temp;
count++;
}
cout<<"result:"<<sum/count<<endl;//计算平均值
infile.close();
}
例3:(二进制文件流)产生一个5--1000之间的技术文件,将第20-30之间的数读出后输入
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
void main()
{
//写文件
ofstream outfile("data.txt",ios::out|ios::binary);
if(!outfile)
{cout<<"can't open"<<endl;exit(1);}
int i;
for(i=5;i<1000;i+=2)
outfile.write((char*)&i,sizeof(int));
outfile.close();
//读文件
ifstream infile("data.txt",ios::in|ios::binary);
if(!infile)
{cout<<"cant open"<<endl;exit(1);}
int x;
infile.seekg(1*sizeof(int));//指针跳过20个int的数指向第21个。
for(i=0;i<10;i++)
{infile.read((char*)&x,sizeof(int));
cout<<x<<endl;}
infile.close();
}