c++ int类型转换为string类型

//int类型转换为string类型
//Int_i:	  要转换的int类型
//String_s:转换后的string类型
void Int_To_Str(int Int_i,char *String_s)
{
	int a;
	int b= 0;	 								//用于计数
	char *ptrfing,pBuffer[5];	//定义一个字符串数组和字符串指针,
	ptrfing = String_s; 			//内部指针指向外部指针,进行参数传递,是属于源参数传递(通过地址),
	if(Int_i< 10)		  				// 当整数小于10,转换为0x格式
	{
		*ptrfing ++ = '0'; 			//单个数字前面补0
		*ptrfing ++ =Int_i+0x30;
	}
	else
	{
		while(Int_i> 0)
		{
			a= Int_i% 10;
			Int_i=Int_i/ 10;
			pBuffer[b++] =a+0x30;	// 通过计算把数字编成ASCII码形式
		}
		b-- ;
		for(;b>= 0;b--) 		// 将得到的字符串倒序
		{
			*(ptrfing++) = pBuffer[b];
		}
	}
	*ptrfing = '\0';
}
char* Int2String(int num,char *str)//10进制 
{
	int i = 0;//指示填充str 
	//确定开始调整的位置 
	int j = 0;
	if(num<0)//如果num为负数,将num变正 
	{
		num = -num;
		str[i++] = '-';
	} 
	//转换 
	do
	{
		str[i++] = num%10+48;//取num最低位 字符0~9的ASCII码是48~57;简单来说数字0+48=48,ASCII码对应字符'0' 
		num /= 10;//去掉最低位	
	}while(num);//num不为0继续循环
	
	str[i] = '\0';
	

	if(str[0]=='-')//如果有负号,负号不用调整 
	{
		j = 1;//从第二位开始调整 
		++i;//由于有负号,所以交换的对称轴也要后移1位 
	}
	//对称交换 
	for(;j<i/2;j++)
	{
		//对称交换两端的值 其实就是省下中间变量交换a+b的值:a=a+b;b=a-b;a=a-b; 
		str[j] = str[j] + str[i-1-j];
		str[i-1-j] = str[j] - str[i-1-j];
		str[j] = str[j] - str[i-1-j];
	} 
	
	return str;//返回转换后的值 
}

猜你喜欢

转载自blog.csdn.net/qq_35831134/article/details/105454726