一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

C++ 基础编程之十进制转换为任意进制及操作符重载

时间:2017-04-06 编辑:简简单单 来源:一聚教程网

C++ 基础编程之十进制转换为任意进制及操作符重载

       最近学习C++ 的基础知识,完成十进制转换为任意进制及操作符重载,在网上找的不错的资料,这里记录下,

实例代码:

 

 代码如下复制代码

#include

#include

#include

usingnamespacestd;

usingstd::iterator;

///


///十进制转换为任意进制,为了熟悉操作符,也加了操作符重载。

///包括自增(++),运算符重(+),赋值函数重载(=),输出符(<<)

///

classTenToAny

{

  vectorvalue;

  longlong_n;

  longlong_x;

public:

  TenToAny():_n(10),_x(0)

  {  

  

  }

  voidSwitch()

  {

    try

    {

      intx=_x, n=_n;

      charflag=' ';

      if(x>LONG_MAX||x

        throw"溢出";

      if(x<0)

      {

        flag='-';

        x=-x;

      }

      

      while(x!=0)

      {

        longlongremain = x%n;

         x = x/n;

      

        if(remain>=10)

          remain ='A'+ remain % 10;

        else 

          remain +='0';

        value.push_back(remain);

      }

      vector::reverse_iterator v= value.rbegin();

      while(*v=='0')

        value.pop_back();

      if(flag=='-')

        value.push_back(flag);

    }

    catch(char*e)

    {

      cout<

    }

  }

  TenToAny(longlongn,longlongx)

  {

    _n=n;

    _x=x;

    Switch();

  }

  TenToAny &operator = (constTenToAny &num)

  {

    if(this==&num)

      return*this;

    value=num.value;

    _n=num._n;

    _x=num._x;

    return*this;

  }

  TenToAny operator +(constTenToAny &num1)

  {

    TenToAny num;

    num._x=num1._x + _x;

    num._n=num1._n;

    num.Switch();

    returnnum;

  }

  TenToAny &operator ++()//前置++

  {

    _x++;

    value.clear();

    this->Switch();

    return*this;

  }

  TenToAny &operator ++(int)//后置++

  {

    TenToAny *temp=newTenToAny(this->_n,this->_x);

    _x++;

    value.clear();

    this->Switch();

    return*temp;

  }

  friendostream &operator <<(ostream &out,TenToAny num);

    

  

};

ostream &operator <<(ostream &out,TenToAny num)

{

  vectorvalue =num.value;

  vector::reverse_iterator v= value.rbegin();

  for(;v!=value.rend();v++)

  {

    out<<*v;

  }

  returnout;

}

intmain()

{

  TenToAny num(19,111);

  TenToAny copy(19,222);

  TenToAny sum;

  sum =num+copy;

  cout<

  cout<

  

  cout<

  

  cout<<(++copy)<

  

  return0;

}

 

运行结果:

热门栏目