【题目】将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。
【分析】这道题主要是要注意完整性,特殊情况进行考虑。比如:正负,超过边界等等情况。
【代码】
int StrToInt(string str) {
int value=1;
int minus = +1;
if(str == "")
return 0;
if (NULL == str.c_str())
{
value=-1;
return 0;
}
bool flag = true;
int len = str.length();
int plen = 0;
long count=0;
while (plen<=len)//
{
'-')
{
minus = -1;
plen++;
}
else if (str[plen] == '+')
{
minus = +1;
plen++;
}
if ((str[plen] >= '0') && (str[plen] <= '9'))//
{
count = count * 10;
count += (str[plen]-'0')*minus;
if (((count > 0x7FFFFFFF) && (minus)) || ((count < (signed int)0xFFFFFFFF) && (!minus)))
{
count = 0;
return (int)count;
}
plen++;
}
else
{
count = 0;
return (int)count;
}
if (str[plen] == '\0')
return (int)count;
}
return (int)count;
}
【总结】
做了这道题,我想总接的是:如何进行输入完整性或者编程完整性的思考。比如正确情况下的输出,边界情况(大于 最大int型整数或者小于 最小int型整数),特殊情况的处理(str为空,为“”,为非数字)。