数字转化为特定格式的字符串


要实现的效果:

9999999==9,999,999

相隔几位和插入的字符是可控的。



1.将数字转化为字符数组

2.新建一个vector存储数字字符

3.翻转整个字符vector

4.根据插入的位置,插入要插入的字符,存储在一个新的vector

5.翻转新的vector

6.插入'\0'结束字符

7.检测第一个字符是不是插入字符,如果是,删除

8.vector转化为字符串

9.这个是有位数限制的,我这边最多是10位,但是游戏中用是够了,不够的话就该num的类型吧!


代码:

std::string SFUtils::num2StrWidthChar(int num, int place, char ch)
{
	std::string result;
	
	char t[256];

	if (num < pow(10, place))//这一部分代码可有可无
	{
		sprintf_s(t, "%d", num);
		result = t;
		return result;
	}

	//将数字转化为字符数组
	sprintf_s(t, "%d", num);
	std::vector<char> charVec;
	//将字符数组输出到vector中,只取有用的字符
	for (int i = 0; i < 256;i++)
	{
		if (t[i] == '\0')//字符串结尾
		{
			break;
		}
		charVec.push_back(t[i]);
	}
	//第一次翻转字符
	for (int i = 0; i < charVec.size() / 2; i++)
	{
		int left = i;
		int right = (charVec.size() - 1) - i;
		std::swap(charVec[left], charVec[right]);
	}
	//插入ch
	std::vector<char > resChar;
	for (int i = 0; i < charVec.size();i++)
	{
		resChar.push_back(charVec[i]);
		if ((i + 1) % place == 0)
		{
			resChar.push_back(ch);
		}
	}
	//第二次翻转字符
	for (int i = 0; i < resChar.size() / 2; i++)
	{
		int left = i;
		int right = (resChar.size() - 1) - i;
		std::swap(resChar[left], resChar[right]);
	}
	//加入最后的字符
	resChar.push_back('\0');
	//如果第一个是间隔符号,删除
	if (resChar[0] == ch)
	{
		resChar.erase(resChar.begin());
	}
	//转换为字符串
	char *ppp = new char[resChar.size()];
	for (int i = 0; i < resChar.size(); i++)
	{
		ppp[i] = resChar[i];
	}

	result = ppp;
	delete[] ppp;
	return result;
}

//使用示例
std::string str =SFUtils::num2StrWidthChar(829393, 3, ',') ;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值