/** * @file * Copyright 2015 (c) Anna Schumaker. */ #include #include #define O_MINUTES (60) #define O_HOURS (60 * O_MINUTES) #define O_DAYS (24 * O_HOURS) const std::string string :: utos(unsigned int u) { std::stringstream ss; ss << u; return ss.str(); } const std::string string :: sec2str(unsigned int sec) { std::stringstream ss; unsigned int minutes = sec / 60; unsigned int seconds = sec % 60; ss << minutes << ":"; if (seconds < 10) ss << "0"; ss << seconds; return ss.str(); } const std::string _time_detail(unsigned int value, unsigned int remaining, const std::string &field) { std::string res; if (value > 0) { res += string :: utos(value) + " " + field; if (value > 1) res += "s"; if (remaining > 0) res += ", "; } return res; } const std::string string :: sec2str_detailed(unsigned int sec) { std::string res; unsigned int factor[3] = { O_DAYS, O_HOURS, O_MINUTES }; std::string field[3] = { "day", "hour", "minute" }; unsigned int val; for (unsigned int i = 0; i < 3; i++) { val = sec / factor[i]; sec %= factor[i]; res += _time_detail(val, sec, field[i]); } res += _time_detail(sec, 0, "second"); return res; }