传统的进制转换是用栈来实现,这样子没什么问题,但是相对来说需要理解栈的工作原理
这里给出一种自己总结的用string实现的进制转换
char get(int x)//以16进制为例
{
if(x<=9)return x+'0';
return x-10+'A';
}
string base(int a,int b)
{
string c="";//可以不用初始化
while(a)
{
int t=a%b;
c+=get(t);
a=a/b;
}
reverse(c.begin(),c.end());//用短除法实现,最后要翻转回来
return c;
}
还有一种是回文数的实现
//传统的判断回文数是双指针从头尾指到中间,而回文数的一个特点是翻转一次依然跟原数相同,可以直接用reverse实现
bool check(string a)
{
string b=a;
reverse(b.begin(),b.end());
if(a!=b)
return false;
return true;
}
在日常写题中,string是一种很常用的数据类型,我个人理解是大部分情况下string可以看成vector<char>,但vector的使用相对没有string灵活,整数int大部分情况下也很难操作因为他在内存上可以看成是一块数据,除了位运算的时候可以分割,但位运算的时候其实也是看成一长串的数组
所以综上所述,我认为大部分场合下将整数转换成string是一种明智的做法