在GCC的std :: put_time执行情况?(std::put_time implementa

2019-07-17 18:57发布

我试图编译这个示例程序使用GCC(测试版本4.5.1,4.6.3,4.8.4):

#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>

using std::chrono::system_clock;

int main()
{
    system_clock::time_point now = system_clock::now();
    std::time_t now_c = system_clock::to_time_t(
                            now - std::chrono::hours(24));
    std::cout << "One day ago, the time was "
              << std::put_time(std::localtime(&now_c), "%F %T") << '\n';
}

但它告诉我:

prog.cpp: In function 'int main()':
prog.cpp:14:18: error: 'put_time' is not a member of 'std'

我想,也许它尚未实现。 于是,我就检查该功能的执行情况。 我只找到了这个网页:

  • http://gcc.gnu.org/projects/cxx0x.html

但我找不到任何音符put_timechrono或一致好评。 任何人都可以指向我提供了关于这个库的执行情况信息的资源?

Answer 1:

见TODO扩展了iomanip操纵的std :: GET_TIME和std :: put_time为GCC 4.8.0。

又见跨平台的方式来获得一天的时间? 声称是不是在4.7.0中实现。


更新:由于GCC开发者乔纳森Wakely证实如下:该std::get_timestd::put_time操纵在GCC 4.9人仍下落不明。


UPDATE:乔纳森Wakely 关闭此票在2014年12月22日:

修正了GCC 5

感谢simonwo让我知道。



Answer 2:

你可能已经注意到了你给不列出库中的任何部分的链接! 但是,下面的表格,它说:

该库实现的状态可以在此进行跟踪表

该表指出, std::get_timestd::put_time操纵尚未实现。

编辑: put_time现在在GCC开发主干。



文章来源: std::put_time implementation status in GCC?