Ответ 1
У вас возникла ошибка в реализации Microsoft функции std::num_get::do_get
, в частности секции, которая анализирует часть времени AM/PM (%p
):
case 'p':
_Ans = _Getloctxt(_First, _Last, (size_t)0, ":AM:am:PM:pm");
if (_Ans < 0)
_State |= ios_base::failbit;
else
_Pt->tm_hour += _Ans * 12;
break;
Проблема заключается в том, что _Getloctxt возвращает int в диапазоне [0,3], а не в ожидаемом диапазоне [0,1].
Об этой ошибке сообщается Microsoft (ID: 808162), которые утверждают, что исправили ее в Visual Studio 2015.