bool str2num(const SQChar *s,SQObjectPtr &res) { SQChar *end; const SQChar *e = s; SQBool isfloat = SQFalse; SQChar c; while((c = *e) != _SC('\0')) { if(c == _SC('.') || c == _SC('E')|| c == _SC('e')) { //e and E is for scientific notation isfloat = SQTrue; break; } e++; } if(isfloat){ SQFloat r = SQFloat(scstrtod(s,&end)); if(s == end) return false; res = r; } else{ SQInteger r = SQInteger(scstrtol(s,&end,10)); if(s == end) return false; res = r; } return true; }
bool str2num(const SQChar *s,SQObjectPtr &res) { SQChar *end; if(scstrstr(s,_SC("."))){ SQFloat r = SQFloat(scstrtod(s,&end)); if(s == end) return false; res = r; return true; } else{ SQInteger r = SQInteger(scstrtol(s,&end,10)); if(s == end) return false; res = r; return true; } }