(一)将字符串转换为整数
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;
}