//题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。
#include<iostream>
#include<string.h>
using namespace std;
enum Status {valid = 0,invalid};
int gStatus = valid;//gStatus是一个全局变量,用来标记非法输入,0
int StrToInt(const char *str)
{
gStatus = invalid;//1
long long num = 0;
if(str != NULL && *str != '\0')//考虑字符串为空并且*str !='\0'的情况
{
bool minus = false;//定义一个布尔变量
if(*str == '+')
str++;
else if(*str == '-')
{
str++;
minus = true;//当第一个字符为‘-’时
}
while(*str !='\0')
{
if(*str >='0' && *str<='9')
{
int flag = minus?-1:1;//d定义一个标志
num = num*10+flag*(*str - '0');
if((!minus && num>0x70000000)||(minus && num<(signed int)0x80000000))//判断是否溢出
{
num = 0;
break;
}
str++;
}
else
{
num=0;
break;
}
}
}
if(*str == '\0') gStatus = valid;//
return num;
}
void main()
{
//char *str = "+300";
char *str = " ";
int num = StrToInt(str);
cout<<num<<endl;
}