gpt4 book ai didi

c++ - 这是 std::get_time 中的错误吗?

转载 作者:可可西里 更新时间:2023-11-01 15:24:51 24 4
gpt4 key购买 nike

我正在尝试解析日期时间字符串并将结果放入 std::tm 结构中。下面是代码,

#include <iomanip>
#include <ctime>
#include <sstream>
#include <string>

std::stringstream ss;
struct std::tm when;

ss.str("8/14/2015 3:04:23 PM");
ss >> std::get_time(&when, "%m/%d/%Y %r");

运行代码后,when.tm_hour 为 27。这是一个错误,还是我做错了什么?

我在 Windows 7 上使用 Visual Studio 2013。

谢谢。

最佳答案

您在 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 返回 [0,3] 范围内的 int,而不是预期范围 [0,1]。

此错误已报告给 Microsoft(ID:808162),微软声称已在 Visual Studio 2015 中修复它。

关于c++ - 这是 std::get_time 中的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32019209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com