服务器之家

服务器之家 > 正文

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

时间:2021-04-30 15:40     来源/作者:C++教程网

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

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

实例代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include<iostream>
#include<vector>
#include<limits>
using namespace std;
using std::iterator;
///<summary>
///十进制转换为任意进制,为了熟悉操作符,也加了操作符重载。
///包括自增(++),运算符重(+),赋值函数重载(=),输出符(<<)
///</summary>
class TenToAny
{
  vector<char> value;
  long long _n;
  long long _x;
public:
  TenToAny():_n(10),_x(0)
  {  
 
  }
  void Switch()
  {
    try
    {
      int x=_x, n=_n;
      char flag=' ';
      if(x>LONG_MAX||x<LONG_MIN)
        throw "溢出";
      if(x<0)
      {
        flag='-';
        x=-x;
      }
     
      while(x!=0)
      {
        long long remain = x%n;
         x = x/n;
     
        if(remain>=10)
          remain = 'A'+ remain % 10;
        else
          remain +='0';
        value.push_back(remain);
      }
      vector<char>::reverse_iterator v= value.rbegin();
      while(*v=='0')
        value.pop_back();
      if(flag=='-')
        value.push_back(flag);
    }
    catch(char *e)
    {
      cout<<e<<endl;
    }
  }
  TenToAny(long long n,long long x)
  {
    _n=n;
    _x=x;
    Switch();
  }
  TenToAny &operator = (const TenToAny &num)
  {
    if(this==&num)
      return *this;
    value=num.value;
    _n=num._n;
    _x=num._x;
    return *this;
  }
  TenToAny operator +(const TenToAny &num1)
  {
    TenToAny num;
    num._x=num1._x + _x;
    num._n=num1._n;
    num.Switch();
    return num;
  }
  TenToAny &operator ++()//前置++
  {
    _x++;
    value.clear();
    this->Switch();
    return *this;
  }
  TenToAny &operator ++(int)//后置++
  {
    TenToAny *temp=new TenToAny(this->_n,this->_x);
    _x++;
    value.clear();
    this->Switch();
    return *temp;
  }
  friend ostream &operator <<(ostream &out,TenToAny num);
   
 
};
ostream &operator <<(ostream &out,TenToAny num)
{
  vector<char> value =num.value;
  vector<char>::reverse_iterator v= value.rbegin();
  for(;v!=value.rend();v++)
  {
    out<<*v;
  }
  return out;
}
int main()
{
  TenToAny num(19,111);
  TenToAny copy(19,222);
  TenToAny sum;
  sum =num+copy;
  cout<<num<<endl;
  cout<<copy<<endl;
 
  cout<<copy++<<endl;
 
  cout<<(++copy)<<endl;
 
  return 0;
}

运行结果:

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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
返回顶部

490
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40