//重载流运算符
#include<iostream>
#include<string>
using namespace std;
//At类
class At
{
public:
At(){}
~At(){}
int n;
};
//complexs类
class complexs
{
private:
double x;
double y;
public:
complexs(double a=0.0,double b=0.0):x(a),y(b){}
~complexs(){}
friend istream& operator>>(istream& is,complexs& a );//声明为友元函数,可以直接调用私有成员
friend ostream& operator<<(ostream& ou,complexs& a);
};
//重载输出运算符,cout是ostream类的对象.
ostream& operator<<(ostream& o,const At& a)//重载流运算符的函数.
{
o<<a.n;
return o;
}
//重载输入运算符,cin是istream类的对象.
istream& operator>>(istream& is,complexs& a )
{
string s;
is>>s;
int pos=s.find('+',0);//找到字符串的+号前面的数字.
string temp=s.substr(0,pos);
a.x=atof(temp.c_str());//将实部导入
int pos2=s.find('i',0);
temp=s.substr(pos+1,pos2-pos-1);
a.y=atof(temp.c_str());//将虚部导入
return is;
}
//重载输出运算符,cout是ostream类的对象.
ostream& operator<<(ostream& ou,complexs& a)
{
ou<<a.x<<'+'<<a.y<<'i';
return ou;
}
int main()
{
At s;
s.n=100;
cout<<s<<"hello"<<endl;
complexs a;
cin>>a;
cout<<a<<endl;
system("pause");
return 0;
}
流插入运算符和流提取运算符的重载
最新推荐文章于 2022-02-01 20:21:21 发布