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

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

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;
}

相关文章
相关标签/搜索