題目描述:請你寫一個函數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