gpt4 book ai didi

c++ - 对于 GCC <5,是否有 std::put_time 的内置替代方案?

转载 作者:bug小助手 更新时间:2023-10-28 10:47:20 38 4
gpt4 key购买 nike

我暂时停留在 GCC4.8 上。我想将当前时间打印为秒以外的时间。如果 put_time工作,我的代码会很简单,像这样:

std::cout << std::setw(24) << std::put_time(c_time, "[%T%z %F] ");

没有 put_time ,我必须访问 c_time 的元素手动并手动进行所有格式化,这对 a** 来说会很痛苦,如果可能的话,我宁愿避免这样做。请注意,这并不意味着我不想以任何方式与 C 交互,即使是间接的——我只想尽可能避免直接用 C 编码。

但是,我找不到 std::put_time 的任何替代品, 除了 strftime ,我想避免这种情况,因为它需要几乎两倍的代码行并且更难阅读,至少对我来说是这样。另外,这是 C++,而不是 C,所以我想尽可能避开 C 函数。

我错过了什么吗? std::put_time 是否有内置替代方案?哪个在 GCC 4.8 下工作?

请注意,它不必以完全相同的方式工作 - 例如,如果它直接将其打印到输出,而不是作为流操纵器,那也很好,就像一个函数一样返回了 std::string包含格式化的时间。

我用谷歌搜索了一番,发现 <chrono> ,但这不起作用,因为它没有任何东西可以自动格式化时间。我仍然需要手动完成,而且我很确定它会更多工作,因为我必须将自纪元以来的秒数解析为年、月、日等。

最佳答案

除了put_time 没有其他功能用于输出 chrono 中提供的时间或 iomanip图书馆。

ctime 库确实提供:strftime , ctime , 和 asctime .

自从 http://stackoverflow.com不允许有关查找 3rd 方库的问题,我猜您只是在要求某人指导您使用 strftimestd::put_time(c_time, "[%T%z %F] ") 可以写成这样的格式:

char foo[24];

if(0 < strftime(foo, sizeof(foo), "[%T%z %F] ", c_time)) cout << foo << endl;

关于c++ - 对于 GCC <5,是否有 std::put_time 的内置替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37421747/

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