gpt4 book ai didi

c++ - std::get_time 在 g++ 和 clang++ 中被破坏了吗?

转载 作者:IT老高 更新时间:2023-10-28 23:00:38 25 4
gpt4 key购买 nike

我今天正在处理一些时间函数,并注意到使用 %r(或 %p)的标准转换似乎不适用于通过 的输入g++ 或 clang++ 上的 std::get_time()。见 this live code version对于 g++ 和 clang++。它确实在带有 VC++ 的 Windows 下似乎可以正常工作(参见 closely related question)。另请注意,无论是否包含 imbue 行,效果都是相同的。如果重要的话,我的 Linux 机器上的语言环境设置为 "en_US.UTF-8"

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

int main(){
std::tm t{};
std::stringstream ss{"1:23:45 PM"};
ss.imbue(std::locale(std::cin.getloc(),
new std::time_get_byname<char>("en_US")));
ss >> std::get_time(&t, "%r");
if (ss.fail()) {
std::cout << "Conversion failed\n" << std::put_time(&t, "%r") << '\n';
} else {
std::cout << std::put_time(&t, "%r") << '\n';
}
}

最佳答案

正如评论者所指出的,这实际上是 libstdc++ 中的一个错误(遗漏)。一个 bug report已提交。

关于c++ - std::get_time 在 g++ 和 clang++ 中被破坏了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37552982/

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