# Include <iostream> # include <limits> using namespace STD; Enum status {valid = 0, invalid}; int g_status = valid; int strtoint (const char * Str) {g_status = invalid; long num = 0; If (STR! = NULL) {const char * digit = STR; // is the first letter a plus or minus sign? Bool minus = false; If (* digit = '+') {digit ++;} else if (* digit = '-') {digit ++; minus = true;} while (* digit! = '\ 0') {If (* digit> = '0' & * digit <= '9 ') {num = num * 10 + (* digit-'0'); If (Num> STD: numeric_limits <int >:: max () {num = 0; break;} digit ++;} else {num = 0; break ;}} if (* digit = '\ 0') {g_status = valid; If (minus) {num =-num ;}}return static_cast <int> (Num) ;}void main () {const char * s = "-1234 "; int A = strtoint (s); cout <A <Endl;} // you need to think about the following points: // 1 // invalid input. The pointer is null. // 2 // large number overflow // 3 // What is the difference between NULL pointer and normal 0?