1、 题目
把字符串转换成整数
2、思路
1.功能测试
正数/复数/0
2.边界值测试
最大的正整数/最小的负整数(数据上下溢出)
3.特殊输入测试
空字符串“”的处理,返回0,设置非法输入
字符串只有符号位的处理,返回0,设置非法输入
输入的字符串中有非数字字符,返回0,设置非法输入
class Solution {
public:
int StrToInt(string str)
{
const char*cstr = str.c_str();
if(str.empty())
{
return 0;
}
long long sum = 0;
// 处理符号位
int IF = 1;
if(*cstr=='+')
{
IF = 1;
cstr++;
}
else if(*cstr=='-')
{
IF = -1;
cstr++;
}
while(*cstr!='\0')
{
if(*cstr>='0'&&*cstr<='9')
{
sum = sum*10+(*cstr-'0');
cstr++;
//如果溢出,则标记为非法输入
if(((IF>0)&&(sum>0x7FFFFFFF)||(IF<0)&&(sum>0x80000000)))
{
return 0;
}
}
else
{
return 0;
}
}
sum = sum*IF;
return (int)sum;
}
};