Oferta de dedo de espada: convertir cadena a entero

Descripción del título

Para convertir una cadena en un entero, se requiere una función de biblioteca que no pueda convertir una cadena en un entero. Si el valor es 0 o la cadena no es un valor válido, devuelve 0

Ingrese la descripción:

Introduzca una cadena, incluidos los símbolos alfanuméricos, puede estar vacía

Descripción de salida:

Si es una expresión numérica legal, devuelva el número; de lo contrario, devuelva 0

Ejemplo 1

De entrada

+2147483647 
    1a33

Salida

2147483647 
    0
long long string2int(string &s) {
    int len = s.size();
    long long sum = 0;
    for (int i = len - 1; i >= 0; --i) {
        if (!isdigit(s[i])) return 0;
        sum += (s[i] - '0') * pow(10, len - 1 - i);
        cout << sum << endl;
    }
    return sum;
}

int StrToInt(string str) {
    int len = str.size();
    if (len <= 0) return 0;
    if (str[0] == '+') {
        string s = str.substr(1, len - 1);
        long long tmp = string2int(s);
        if(tmp > INT32_MAX) return 0;
        return int(tmp);
    } else if (str[0] == '-') {
        string s = str.substr(1, len - 1);
        long int tmp = -string2int(s);
        if(tmp < INT32_MIN) return 0;
        return int(tmp);
    } else{
        long long tmp = string2int(str);
        if(tmp > INT32_MAX) return 0;
        return int(tmp);
    }
}

 

Publicado 34 artículos originales · Me gusta 10 · Visitantes más de 10,000

Supongo que te gusta

Origin blog.csdn.net/weixin_41111088/article/details/105183209
Recomendado
Clasificación