https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71557

            Bug ID: 71557
           Summary: time_get is case sensitive
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
  Target Milestone: ---

Howard writes:

Consider:

    #include <ctime>
    #include <iostream>
    #include <iomanip>
    #include <sstream>

    using namespace std;

    int main() {
        tm tmbuf;
        stringstream str("20:48:01 MAR 31 2016");

        str >> get_time(&tmbuf, "%H:%M:%S %b %d %Y");

        cout << put_time(&tmbuf, "%m-%d-%Y") << endl;
    }

The expected output is:

   03-31-2016

The issue is “MAR”.  If I change to “Mar” then everyone gets the right answer.

Now to argue the case for “MAR”:

[locale.time.get.members]/p12, in describing the effects of do_get,
references ISO/IEC 9945 strptime for the format characters such as
“%b”.  Here’s a link to that specification:

http://pubs.opengroup.org/onlinepubs/009695399/functions/strptime.html

> Case is ignored when matching items in buf such as month or weekday names.


c.f. http://stackoverflow.com/q/37856887/576911

Reply via email to