将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
class Solution {
public:
int StrToInt(string str) {
int flag = 1; //设置符号标志
long long ret = 0; //考虑到返回值可能较大,定义为long long
const char* strch=str.c_str(); //字符串转为char类型字符数组
while(isspace(*strch)) //如果含有空格,指针就向后走
{
strch++;
}
if (*strch == '+') //如果是正数,不用处理
strch++;
if (*strch == '-') //如果是负数,将符号标志取反
{
flag = -flag;
strch++;
}
while(*strch)
{
if (isdigit(*strch)) //判断是否为数字
{
ret = ret * 10 + (*strch - '0')*flag;//字符数组中前边的数字在高位
if ((ret > INT_MAX) || (ret < INT_MIN)) //考虑溢出
{
ret = 0;
break;
}
strch++;
}
else //不是合法的数值
{
ret=0; //返回0
break;
}
}
return (int)ret;
}
};