#include<iostream>
using namespace std;
enum InputStatus{kValid=0,kInvalid};
int InStatus = kValid;
int StrToInt(char* str) {
InStatus = kInvalid;
long long num = 0;
if(str != NULL&&*str!='0') {
const char *digit = str;
bool ValueFlag = false;
if (*digit == '+') {
digit++;
}
else {
if (*digit == '-') {
ValueFlag = true;
digit++;
}
}
while (*digit!= '\0') {
if (*digit >= '0'&&*digit <= '9') {
num = num * 10 + *digit - '0';
if ((ValueFlag==false && num >numeric_limits<int>::max())|| (ValueFlag==true && num >numeric_limits<int>::min()+1))
{
num = 0;
break;
}
digit++;
}
else {
num = 0;
break;
}
}
if (*digit == '\0') {
InStatus = kValid;
if (ValueFlag)
num = 0 - num;
}
return (int)num;
}
}
int main() {
char *string="-2345";
int value = StrToInt(string);
cout << value << endl;
system("pause");
return 0;
}