分为两点进行分析:
(1)首字符:+ - 1-9 其他
为区别+ - ,设置一个标志位flag,为正时为1,负为0
为1-9则

ret=ret*10+(str[0]-'0');

其他则返回0
(2)除首字符外
为0~9

ret=ret*10+(str[i]-'0');

其他则返回0

class Solution {
public:
    int StrToInt(string str) {
        int n=str.size();
        bool flag=1;
        long long ret=0;
        for(int i=0;i<n;i++){
            if(i==0){
                if(str[0]=='-'&&n>1)
                    flag=0;
                else if(str[0]=='+'&&n>1)
                    flag=1;
                else if('1'<=str[0]&&str[0]<='9')
                    ret=ret*10+(str[0]-'0');
                else
                    return 0;
            }
            if(i>0){
                if('0'<=str[i]&&str[i]<='9')
                    ret=ret*10+(str[i]-'0');
                else
                    return 0;
            }
        }
        if(flag==1)
            return ret;
        else
            return -ret;
    }
};