std::get_time 有错误吗?

老虎电视台

我正在解决一个网站上的问题。我的代码如下:

string timeConversion(string s) {
    std::tm t = {};
    string result = "";
    std::istringstream ss(s);
    
    ss >> std::get_time(&t, "%I:%M:%S%p");
    if (ss.fail()) {
        std::ostringstream oss;
        oss << std::put_time(&t, "%H:%M:%S")  << endl;
        result = oss.str();
    } else {
        result = "Parse failed";
    }
    
    return result;
}

当我输入07:05:45PM它返回07:05:45但我预计19:05:45怎么了?

更新

“if”语句的代码是错误的。一定是

string timeConversion(string s) {
    std::tm t = {};
    string result = "";
    std::istringstream ss(s);
    
    ss >> std::get_time(&t, "%I:%M:%S%p");
    if (ss.fail()) {
        result = "Parse failed";
    } else {
        std::ostringstream oss;
        oss << std::put_time(&t, "%H:%M:%S")  << endl;
        result = oss.str();
    }
    
    return result;
}

代码“07:05:45PM”返回“Parse failed”(g++ 5.4.0)这也出乎意料。

亚历山德罗·特鲁齐

这是 gcc https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71367 中的一个错误

大胆的强调是我的。

埃德·贝罗塞特 2016-05-31 21:17:27 UTC

已创建附件 38616 [详细信息] 演示在 std::time_get 中缺少 %r 支持的简短程序

time_get 似乎还不支持 "%r" 和 "%p" 格式,即使它们都被 time_put 支持。%p 应该是“AM”和“PM”(如果有)的语言环境版本,而 %r 相当于 POSIX 语言环境中的 %I:%M:%S %p。

最后一条评论说:

Jakub Jelinek 2021-04-27 11:37:54 UTC

GCC 11.1 已发布,将错误重新定位到 GCC 11.2。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

std :: get_time没有解析日期

使用std :: get_time将时间字符串转换为std :: time_t:错误结果

datetime的格式为std :: get_time

C ++使用std :: get_time解析YYMMDD ISO 8601日期字符串会产生意外结果吗?

C ++错误:无法解析函数“ get_time”-Ubuntu g ++

Visual 2015上的std :: get_time不会在不正确的日期失败

使用%I格式说明符的std :: get_time在午夜或中午失败

std::get_time 不适用于 Visual Studio 2012 中的日期

当时间字符串使用“ PM”字段时,如何与std :: put_time std :: get_time往返?

gcc 6.3和clang 4.0中的std :: get_time()不适用于完整的月份名称

为什么“ std :: string(blablabla());” 编译没有错误?

std :: ifstream设置fail()即使没有错误

std :: time_get-来自std :: cin的输入正常;来自std :: istringstream的输入给出错误

std :: get_time-如何检查解析错误

get_time无法按预期运行

没有错误吗?

在`std :: tuple`上调用`std :: get`带有源自`std :: tuple`的元素-格式错误?

可以将C ++ 11 lambda分配给具有错误签名的std :: function

D成员函数std.process.environment.toAA是否有错误?

为什么 GCC 可以编译 std::exception("some error msg") 没有错误?

如何在编译时捕获 std::variant 持有错误类型?

使用std :: time和std :: srand有效代码吗?

Angular $ http.get:如何捕获所有错误?

Get-WinEvent 搜索所有错误

有 std::bytes 吗?

optaplanners toList ConstraintCollector 有错误吗?

pytorch教程有错误吗?

Android shouldShowRequestPermissionRationale有错误吗?

NSString的NSMutableArray有错误吗?