static Coordinate* ParseCoordinate(std::string const& text) { int pos = 0; const char* pszStr = text.c_str(); Coordinate *psTmp = new Coordinate(); // X coordinate psTmp->dfLongitude = CPLAtof(pszStr); while(isNumberDigit(pszStr[pos++])); // Y coordinate if(pszStr[pos - 1] != ',') { delete psTmp; return NULL; } psTmp->dfLatitude = CPLAtof(pszStr + pos); while(isNumberDigit(pszStr[pos++])); // Z coordinate if(pszStr[pos - 1] != ',') { psTmp->bHasZ = FALSE; psTmp->dfAltitude = 0; return psTmp; } psTmp->bHasZ = TRUE; psTmp->dfAltitude = CPLAtof(pszStr + pos); return psTmp; }
Coordinate* ParseCoordinate(std::string const& text) { std::string::size_type pos = 0; Coordinate *psTmp = new Coordinate(); // X coordinate while(isNumberDigit(text[pos++])); psTmp->dfLongitude = atof(text.substr(0, (pos - 1)).c_str()); // Y coordinate if(text[pos - 1] != ',') { delete psTmp; return NULL; } std::string tmp(text.substr(pos, text.length() - pos)); pos = 0; while(isNumberDigit(tmp[pos++])); psTmp->dfLatitude = atof(tmp.substr(0, (pos - 1)).c_str()); // Z coordinate if(tmp[pos - 1] != ',') { psTmp->bHasZ = FALSE; psTmp->dfAltitude = 0; return psTmp; } tmp = tmp.substr(pos, tmp.length() - pos); pos = 0; while(isNumberDigit(tmp[pos++])); psTmp->bHasZ = TRUE; psTmp->dfAltitude = atof(tmp.substr(0, (pos - 1)).c_str()); return psTmp; }