From cede86569338a8ef575cfb82d16077bc398abdf2 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Tue, 17 Jun 2008 18:28:24 -0400 Subject: [PATCH] - Partial fix to bug - snapshot. --- src/Date.cpp | 75 ++++++++++++++-------------------------------------- src/Date.h | 4 +-- 2 files changed, 22 insertions(+), 57 deletions(-) diff --git a/src/Date.cpp b/src/Date.cpp index d2237b0d3..0996f0e84 100644 --- a/src/Date.cpp +++ b/src/Date.cpp @@ -57,7 +57,7 @@ Date::Date (const int m, const int d, const int y) } //////////////////////////////////////////////////////////////////////////////// -Date::Date (const std::string& mdy, const std::string format /* = "m/d/Y" */) +Date::Date (const std::string& mdy, const std::string& format /* = "m/d/Y" */) { int month = 0; int day = 0; @@ -221,65 +221,30 @@ void Date::toMDY (int& m, int& d, int& y) } //////////////////////////////////////////////////////////////////////////////// -std::string Date::toString (const std::string& format /*= "m/d/Y"*/) +const std::string Date::toString (const std::string& format /*= "m/d/Y" */) const { - std::string formatted; + std::cout << "# Date::toString (" << format << ")" << std::endl; + + char buffer[12]; + std::string formatted (""); + formatted.resize (24); for (unsigned int i = 0; i < format.length (); ++i) { - switch (format[i]) + char c = format[i]; + std::cout << "# before " << c << " formatted=" << formatted << " format=" << format << std::endl; + switch (c) { - case 'm': - { - char m[3]; - sprintf (m, "%d", this->month ()); - formatted += m; - } - break; - - case 'M': - { - char m[3]; - sprintf (m, "%02d", this->month ()); - formatted += m; - } - break; - - case 'd': - { - char d[3]; - sprintf (d, "%d", this->day ()); - formatted += d; - } - break; - - case 'D': - { - char d[3]; - sprintf (d, "%02d", this->day ()); - formatted += d; - } - break; - - case 'y': - { - char y[3]; - sprintf (y, "%02d", this->year () % 100); - formatted += y; - } - break; - - case 'Y': - { - char y[5]; - sprintf (y, "%d", this->year ()); - formatted += y; - } - break; - - default: - formatted += format[i]; - break; + case 'm': sprintf (buffer, "%d", this->month ()); break; + case 'M': sprintf (buffer, "%02d", this->month ()); break; + case 'd': sprintf (buffer, "%d", this->day ()); break; + case 'D': sprintf (buffer, "%02d", this->day ()); break; + case 'y': sprintf (buffer, "%02d", this->year () % 100); break; + case 'Y': sprintf (buffer, "%d", this->year ()); break; + default: sprintf (buffer, "%c", c); break; } + + formatted += buffer; + std::cout << "# after " << c << " formatted=" << formatted << " format=" << format << std::endl; } return formatted; diff --git a/src/Date.h b/src/Date.h index dc68f482b..8f83f956a 100644 --- a/src/Date.h +++ b/src/Date.h @@ -37,14 +37,14 @@ public: Date (); Date (time_t); Date (const int, const int, const int); - Date (const std::string&, const std::string format = "m/d/Y"); + Date (const std::string&, const std::string& format = "m/d/Y"); Date (const Date&); virtual ~Date (); void toEpoch (time_t&); time_t toEpoch (); void toMDY (int&, int&, int&); - std::string toString (const std::string& format = "m/d/Y"); + const std::string toString (const std::string& format = "m/d/Y") const; static bool valid (const int, const int, const int); static bool leapYear (int);