std :: get_time没有解析日期

Kla*_*aus 4 c++ datetime

如果我尝试将日期设置为a tmstd::get_time但没有任何反应,则输入流处于失败状态,这意味着已发生解析错误。

以下代码有什么问题?

{   // setting time works
    std::tm t{};
    std::istringstream ss("01:02:03");
    ss.imbue(std::locale("de_DE"));
    ss >> std::get_time(&t, "%H:%M:%S");
    std::cout << ss.fail() << std::endl;
    std::cout << std::put_time(&t, "%c") << '\n';
}   

{   // setting day of month did not work
    std::tm t{};
    std::istringstream ss("2");
    ss.imbue(std::locale("de_DE"));
    ss >> std::get_time(&t, "%d");
    std::cout << ss.fail() << std::endl;
    std::cout << std::put_time(&t, "%c") << '\n';
} 
Run Code Online (Sandbox Code Playgroud)

输出:

0 
Sun Jan  0 01:02:03 1900
1
Sun Jan  0 00:00:00 1900
Run Code Online (Sandbox Code Playgroud)

Mik*_*yke 5

您需要在当天传递前导零:

std::istringstream ss("02");

编辑:现在我注意到根据cppreference

将月份中的日期解析为十进制数字(范围[01,31]),允许但不要求前导零。

也许是个错误?

编辑:错误报告在这里