十进制转换为任意进制及操作符重载

2014-11-23 21:58:35 · 作者: · 浏览: 5
#include
#include
#include
using namespace std;
using std::iterator;
///
///十进制转换为任意进制,为了熟悉操作符,也加了操作符重载。
///包括自增(++),运算符重(+),赋值函数重载(=),输出符(<<)
///
class TenToAny
{
	vector 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=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<
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 value =num.value; vector::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<