68

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'

おそらくまだ実装されていないと思いました。ということで、この機能の実装状況を調べてみました。このページしか見つかりませんでした:

しかし、そこにはメモが見つかりませんでしput_timechrono。このライブラリの実装ステータスに関する情報を提供するリソースを教えてもらえますか?

4

2 に答える 2

81

gcc 4.8.0 のTODO 拡張 iomanip マニピュレータ std::get_time および std::put_timeを参照してください。

時刻を取得するクロスプラットフォームの方法も参照してください。4.7.0 では実装されていないと主張しています。


更新: gcc 開発者のJonathan Wakely が以下で確認したように: gcc 4.9 ではマニピュレータstd::get_timestd::put_timeマニピュレータがまだありません。


更新: Jonathan Wakelyは、2014 年 12 月 22 日にこのチケットをクローズしました。

GCC 5 用に修正

simonwo さん、教えてくれてありがとう。

于 2013-01-03T10:44:49.437 に答える
20

あなたが与えたリンクがライブラリのどの部分もリストしていないことに気づいたかもしれません!しかし、表の下には次のように書かれています。

ライブラリの実装状況は、このテーブルで追跡できます

その表はstd::get_timestd::put_timeマニピュレータがまだ実装されていないことを示しています。

編集:put_time現在GCC開発トランク上にあります。

于 2013-01-03T15:52:29.493 に答える