题目描述:请你写一个函数StrToInt,实现把字符串转换成整数这个功能。当然,不能使用atoi或者其他类似的库函数。
完整代码:
class Solution {
public:
enum Status{kValid = 0,kInvalid};
int g_nStatus = kValid;
int StrToInt(string str) {
g_nStatus = kInvalid;
long long num = 0;
const char* cstr = str.c_str();
if( (cstr != NULL) && (*cstr != '\0') )
{
int minus = 1;
if(*cstr == '-')
{
minus = -1;
cstr++;
}
else if(*cstr == '+')
cstr++;
while(*cstr != '\0')
{
if(*cstr > '0' && *cstr < '9')
{
g_nStatus = kValid;
num = num*10 + (*cstr -'0');
cstr++;
if( ((minus>0) && (num > 0x7FFFFFFF)) ||
((minus<0) && (num > 0x80000000)) )
{
g_nStatus = kInvalid;
num = 0;
break;
}
}
else
{
g_nStatus = kInvalid;
num = 0;
break;
}
}
if(g_nStatus == kValid)
num = num * minus;
}
return (int)num;
}
};
相关知识点:
1、c_str()
https://blog.csdn.net/JIEJINQUANIL/article/details/51547027
2、指针常量和常量指针
https://blog.csdn.net/jackystudio/article/details/11519817