//核心代码,将一个整数转成string类型;
//参数long long int num表示需要转换的数据;
//参数unsigned short jz 表示进制,范围[2,16]。
string num2str(long long int num, unsigned short jz = 10)
{
static char chars[17] = "0123456789ABCDEF";
string accord = "";
if (num < 0)
{
num = -num;
accord = "-";
}
jz = jz > 16 ? 10 : jz;
jz = jz < 2 ? 10 : jz;
long long int numd10 = num / jz;
if (numd10 == 0)
return accord + chars[num % jz];
else
return accord + num2str(numd10,jz) + chars[num % jz];
}
//重载
//核心代码,将浮点数转成string类型;
//参数 double num 表示需要转换的数据;
//参数 unsigned int cut 表示精确到小数多少位
string num2str(double num, unsigned short cut = 6)
{
string accord = "";
if (num < 0)
{
accord = "-";
num = -num;
}
num = num * pow(10, cut);
if ((long long int)num == 0)
{
accord += "0.";
while (cut--)
accord += '0';
return accord;
}
string tmp = num2str((long long int)num,10);
if (tmp.length() <= cut)
{
tmp.insert(0, cut - tmp.length(), '0');
accord = accord + "0." + tmp;
}
else
{
tmp.insert(tmp.length() - cut,1, '.');
accord = accord + tmp;
}
if (accord[accord.length()-1] == '.')
accord = accord.substr(0, accord.length() - 1);
return accord;
}
//函数重载
string num2str(int num, unsigned short jz = 10)
{
return num2str((long long int)num,jz);
}
string num2str(unsigned int num, unsigned short jz = 10)
{
return num2str((long long int)num, jz);
}
string num2str(short int num, unsigned short jz = 10)
{
return num2str((long long int)num,jz);
}
string num2str(float num, unsigned short cut = 6)
{
return num2str((double)num,cut);
}
C++ 中数字转字符串的实现,
最新推荐文章于 2024-08-16 12:33:43 发布