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);
}
}