/* * StringUtils.cpp * * Created on: Apr 8, 2014 * */ #include //toupper #include "StringUtils.h" #include #include #include #include #ifdef WIN32 #include //mktime under windows #endif namespace license { using namespace std; string trim_copy(const string& string_to_trim) { std::string::const_iterator it = string_to_trim.begin(); while (it != string_to_trim.end() && isspace(*it)) it++; std::string::const_reverse_iterator rit = string_to_trim.rbegin(); while (rit.base() != it && isspace(*rit)) rit++; return std::string(it, rit.base()); } string toupper_copy(const string& lowercase) { string cp(lowercase); std::transform(cp.begin(), cp.end(), cp.begin(), (int (*)(int))toupper); return cp; } time_t seconds_from_epoch(const char* timeString) { int year, month, day; tm tm; if (strlen(timeString) == 8) { int nfield = sscanf(timeString, "%4d%2d%2d", &year, &month, &day); if (nfield != 3) { throw invalid_argument("Date not recognized"); } } else if (strlen(timeString) == 10) { int nfield = sscanf(timeString, "%4d-%2d-%2d", &year, &month, &day); if (nfield != 3) { int nfield = sscanf(timeString, "%4d/%2d/%2d", &year, &month, &day); if (nfield != 3) { throw invalid_argument("Date not recognized"); } } } else{ throw invalid_argument("Date not recognized"); } tm.tm_isdst = -1; tm.tm_year = year - 1900; tm.tm_mon = month - 1; tm.tm_mday = day; tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_yday = -1; tm.tm_wday = -1; return mktime(&tm); } } /* namespace license */