C++ 基礎(chǔ)編程之十進制轉(zhuǎn)換為任意進制及操作符重載
更新時間:2017年02月15日 14:48:52 投稿:lqh
這篇文章主要介紹了C++ 基礎(chǔ)編程之十進制轉(zhuǎn)換為任意進制及操作符重載的相關(guān)資料,需要的朋友可以參考下
C++ 基礎(chǔ)編程之十進制轉(zhuǎn)換為任意進制及操作符重載
最近學(xué)習(xí)C++ 的基礎(chǔ)知識,完成十進制轉(zhuǎn)換為任意進制及操作符重載,在網(wǎng)上找的不錯的資料,這里記錄下,
實例代碼:
#include<iostream>
#include<vector>
#include<limits>
using namespace std;
using std::iterator;
///<summary>
///十進制轉(zhuǎn)換為任意進制,為了熟悉操作符,也加了操作符重載。
///包括自增(++),運算符重(+),賦值函數(shù)重載(=),輸出符(<<)
///</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;
}
運行結(jié)果:

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
C++ 中const對象與const成員函數(shù)的實例詳解
這篇文章主要介紹了C++ 中const對象與const成員函數(shù)的實例詳解的相關(guān)資料,希望通過本文能讓大家徹底掌握該如何使用,需要的朋友可以參考下2017-08-08
C語言驅(qū)動開發(fā)之通過ReadFile與內(nèi)核層通信
驅(qū)動與應(yīng)用程序的通信是非常有必要的,內(nèi)核中執(zhí)行代碼后需要將其動態(tài)顯示給應(yīng)用層。為了實現(xiàn)內(nèi)核與應(yīng)用層數(shù)據(jù)交互則必須有通信的方法,微軟為我們提供了三種通信方式,本文先來介紹通過ReadFile系列函數(shù)實現(xiàn)的通信模式2022-09-09
Opencv實現(xiàn)讀取攝像頭和視頻數(shù)據(jù)
這篇文章主要為大家詳細介紹了Opencv實現(xiàn)讀取攝像頭和視頻數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01

