【发布时间】:2019-02-27 04:59:43
【问题描述】:
这曾经播放过一次。我正在尝试从 C++ date 库中获取一些数据,但捕获到异常。我正在编译
-DUSE_AUTOLOAD=0 -DHAS_REMOTE_API=0 -DUSE_OS_TZDB=1
代码有什么问题?
#include <iostream>
#include "date/tz.h"
#include <exception>
using namespace date;
using namespace std::chrono;
int main(int argc, char** argv) {
try {
auto current_time_zone = make_zoned("Europe/Athens", std::chrono::system_clock::now());
auto current_day = date::format("%A", current_time_zone);
auto current_time = date::format("%H:%M", current_time_zone);
std::cout << "day: " << current_day << ", time: " << current_time << " in timezone: " << current_time_zone << std::endl;
//std::cout << " in timezone: " << current_time_zone << std::endl;
} catch ( std::exception& e) {
std::cout << e.what() << std::endl;
}
}
【问题讨论】:
-
我刚刚添加了标签 c++20,使这个问题成为话题。 OP 引用的库是 C++20 草案规范的示例实现。
-
.what()中的消息是什么? -
@SamVarshavchik:“我很好奇“日期库”“非常受欢迎”的证据是什么。“我不知道它是不是真的”非常受欢迎”,但我认为它被投票加入 C++20 的标准库将提高它的受欢迎程度;)对于那些跟上 C++ 发展的人来说,这是众所周知的。尽管 OP 对那些从未听说过的人说的不够清楚。
-
@HowardHinnant:未知错误-1
-
@cateof:我不确定问题出在哪里,但我可以告诉你,我的库不会引发包含“未知错误”消息的异常。尝试将
-DONLY_C_LOCALE=1添加到您的构建标志中。这将避免您的 std::lib 的time_put方面,但会将您仅限于“C”语言环境。如果这解决了问题,那么是您的 std::lib 的std::time_put方面引发了异常。