C++重载<<和>>运算符,实现虚数的输入输出

描述

要实现利用coutcin对虚数类进行输入输出,就需要利用到ostreamistream这两个类。实现过程也比较简单,直接用友元运算符重载函数就行了。

代码

#include <iostream>
#include <cmath>
#include <string>

using std::cout;
using std::endl;
/*
*简介:重载左移右移运算符,实现虚数类的输入输出
*实现方法:友元运算符重载函数
*/
class MyComplex
{
public:
    MyComplex():a(0),b(0){}
    MyComplex(double real,double img):a(real),b(img){}
    ~MyComplex(){};
    //获取虚部值
    double Get_img(){return b;}
    //获取实部值
    double Get_real(){return a;}
    //重载<<运算符,通过cout格式化输出虚数
    friend std::ostream & operator<<(std::ostream & os,const MyComplex &C);
    //重载>>;通过cin获取虚数
    friend std::istream & operator>>(std::istream &input, MyComplex &comp);
private:
    //实部
    double a;
    //虚部
    double b;
};
//重载<<运算符,通过cout格式化输出虚数
std::ostream& operator<<(std::ostream & os,const MyComplex &C)
{
    if(!(C.b && C.a))
    {
        if(C.a == C.b)
        {
            return os;
        }
        if(!C.a)
        {
            os << C.b << "i";
            return os;
        }else
        {
            os << C.a;
            return os;
        }
    }
    os << C.a << std::string(C.b > 0 ? "+" : "-" ) << fabs(C.b) << "i";
    return os;
}

//重载>>;通过cin获取虚数
std::istream & operator>>(std::istream &input, MyComplex &comp)
{
    cout << "real:";
    input >> comp.a;
    cout << "img:";
    input >> comp.b;
}
int main(void)
{
    MyComplex a(-13,0);
    std::cin >> a;
    cout << a << endl;
    return 0;
}
手机上阅读

本文由 giao创作, 采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文地址:《C++重载<<和>>运算符,实现虚数的输入输出》

 最后一次更新于2019-01-05

0 条评论

添加新评论

Markdown is supported.