/////////////////////////////////////////////////////////////// // MT4Q2b.cpp - Alternate Logger // // // // Jim Fawcett, CSE687 - Object Oriented Design, Spring 2012 // /////////////////////////////////////////////////////////////// #include "MT4Q2b.h" #include #include #include template std::string ToString(const T& t) // doesn't need to be part of answer { std::ostringstream out; out.fill('0'); out.width(2); out << t; return out.str(); } std::string dateTime() // doesn't need to be part of answer { ::SYSTEMTIME st; ::GetLocalTime(&st); std::string dt = ToString(st.wMonth) + "/"; dt.append(ToString(st.wDay) + "/"); dt.append(ToString(st.wYear) + " "); dt.append(ToString(st.wHour) + ":"); dt.append(ToString(st.wMinute) + ":"); dt.append(ToString(st.wSecond) + " "); return dt; } Logger::Logger() { // assign dateTime to logger's string theLog = dateTime(); } void Logger::addMessage(const std::string& msg) { std::string temp = msg + ": "; theLog = temp + theLog + "\n"; } void Logger::addToLog(const std::string& logItem) { theLog = theLog + logItem; } std::string Logger::log() { return theLog; } size_t Logger::size() { return theLog.size(); } int main() { std::cout << "\n MT4Q2b - alternate logger meets most requirements"; std::cout << "\n ===================================================\n"; Logger logger; logger.addMessage("This is a message"); logger.addToLog(" first log item\n"); logger.addToLog(" second log item\n"); std::cout << "\n " << logger.log().c_str(); std::cout << "\n logger message size = " << logger.size() << " bytes"; std::cout << "\n\n"; return 0; }