把一个字符串转成double类型 要求:任意字符串,考虑非法情况,不用考虑double溢出情况,不调用系统库(pow/atoi等) 比如: 5325346346.53252352 gewtewt rwetw.42423 如果不合法返回-1double string2double(const string& s) {double res = 0;if (s.size() == 0) {return 0;}int i = 0;while(s[i] == ' ') {++i;}int sign = 1;if (s[i] == '-') {sign = -1;++i;} else if (s[i] == "+") {++i;} else if (!digit(s[i])) {return -1;} else {// do nothing}for (; i < s.size(); ++i) {if (!isgigit(s[i])) {break;}res = res*10 + (s[i]-'0');}if (i < s.size()) {if (s[i] == '.') {++i;} else {return -1;}}double val = 1;for (; i < s.size(); ++i) {if (!isgigit(s[i])) {return -1;}res = res*10 + (s[i]-'0');val *= 10;}return sign * res / val; }