最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

function template
<iomanip>

# std::put_time(C++11)

    template <class CharT>
    unspecified put_time(const struct tm* tmb, const CharT* fmt);

## 概要

日時書式で出力する。

## 要件

- `tmb`は、有効な`tm`型オブジェクトを指すポインタであること。
- `fmt`は、有効な文字配列を指すポインタであること。

## 効果

入出力ストリームオブジェクト`out`があるものとし、以下の関数`f`のように振る舞う：

    template <class CharT, class Traits>
    void f(basic_ios<CharT, Traits>& out, const struct tm* tmb, const CharT* fmt)
    {
      using Iter    = ostreambuf_iterator<CharT, Traits>;
      using TimePut = time_put<CharT, Iter>;
      const TimePut& tp = use_facet<TimePut>(out.getloc());
      const Iter end = tp.put(Iter(out.rdbuf()), out, out.fill(), tmb,
                              fmt, fmt + Traits::length(fmt));

      if (end.failed())
        out.setstate(ios_base::badbit);
    }

## 例

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

    using std::chrono::system_clock;

    int main() {
      // 現在日時を取得
      system_clock::time_point p = system_clock::now();

      // 出力
      std::time_t t = system_clock::to_time_t(p);
      const std::tm* lt = std::localtime(&t);
      std::cout << std::put_time(lt, "%c") << std::endl;
    }

### 出力例

    Thu Dec 25 15:12:30 2014

出力内容の日時は、実行時間に依存する。

## バージョン

### 言語

- C++11

### 処理系

- Clang: 3.0 ✅
- GCC: 5.0 ✅
- ICC: ??
- Visual C++: ??