将整数转换为字符串和将字符串转换为整数

(一)将字符串转换为整数

1.设置两个标记为:①是否为数字②是否是负数

bool validInput = false; //检测是否是有效数字
bool IsMinus = false; //检测是否是负数

(二)将整数转换为字符串

注意:①如果是正数,直接每次取出个位数,放在数组中,然后颠倒数组

②如果是负数,先转换为正数,直接每次取出个位数,放在数组中颠倒,然后再在第一个a[0]='-'第一个位置添加上‘-’负号

两个实现代码如下:

// Str2Int2.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;


bool IsValude=false;//检测是否是有效数字
bool IsFuShu=false;

int str2Int(char* str)
{
int result=0;
char* digest = str;
if (digest!=NULL)
{
//首先检测第一个数
if (*digest == '+')
{
IsFuShu=false;
digest++;
}
else if(*digest == '-')
{
IsFuShu=true;
digest++;
}
while (*digest != '\0')
{
if (*digest>'0'&&*digest<'9')
{
IsValude=true;
result=result*10+(*digest-'0');
digest++;
}
else
{

IsValude=false;
result=0;
break;
}
}
if (*digest == '\0')
{
//说明指针指向最后了
if(IsFuShu)
{
result=0-result;
}

}


}
return result;

}
int _tmain(int argc, _TCHAR* argv[])
{
char str[]="-12a 34";
cout<<str2Int(str)<<endl;

system("pause");
return 0;
}

// Int2Str.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

void change(int num, char s[])
{
int m;
int i;
char tmp[50];
if(num>0)
{
m=0;
while (num>0)
{
tmp[m]=num%10+'0';
num/=10;
m++;
}
tmp[m]='\0';
//颠倒数组
for (i=0;i<m;i++)
{
s[m-i-1]=tmp[i];

}
s[m]='\0';
}
else if(num<0)
{
num=0-num;
m=0;
while (num>0)
{
tmp[m]=num%10+'0';
num/=10;
m++;
}
tmp[m]='\0';
for (i=0;i<m;i++)
{
s[m-i]=tmp[i];
}
s[0]='-';
s[m+1]='\0';
}


}

int _tmain(int argc, _TCHAR* argv[])
{
int num=-123;
char s[100];
change(num, s);
cout<<s<<endl;

system("pause");
return 0;
}

// Str2Int2.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;


bool IsValude=false;//检测是否是有效数字
bool IsFuShu=false;

int str2Int(char* str)
{
	int result=0;
	char* digest = str;
	if (digest!=NULL)
	{
		//首先检测第一个数
		if (*digest == '+')
		{
			IsFuShu=false;
			digest++;
		}
		else if(*digest == '-')
		{
			IsFuShu=true;
			digest++;
		}
		while (*digest != '\0')
		{
			if (*digest>'0'&&*digest<'9')
			{
				IsValude=true;
				result=result*10+(*digest-'0');
				digest++;
			}
			else
			{
				
				IsValude=false;
				result=0;
				break;
			}
		}
		if (*digest == '\0')
		{
			//说明指针指向最后了
			if(IsFuShu)
			{
				result=0-result;
			}

		}


	}
	return result;

}
int _tmain(int argc, _TCHAR* argv[])
{
	char str[]="-12a 34";
	cout<<str2Int(str)<<endl;

	system("pause");
	return 0;
}


// Int2Str.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

void change(int num, char s[])
{
	int m;
	int i;
	char tmp[50];
	if(num>0)
	{
		m=0;
		while (num>0)
		{
			tmp[m]=num%10+'0';
			num/=10;
			m++;
		}
		tmp[m]='\0';
		//颠倒数组
		for (i=0;i<m;i++)
		{
			s[m-i-1]=tmp[i];

		}
		s[m]='\0';
	}
	else if(num<0)
	{
		num=0-num;
		m=0;
		while (num>0)
		{
			tmp[m]=num%10+'0';
			num/=10;
			m++;
		}
		tmp[m]='\0';
		for (i=0;i<m;i++)
		{
			s[m-i]=tmp[i];
		}
		s[0]='-';
		s[m+1]='\0';
	}


}



int _tmain(int argc, _TCHAR* argv[])
{
	int num=-123;
	char s[100];
	change(num, s);
	cout<<s<<endl;

	system("pause");
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值