面試題65 把字符串轉換成整數

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章