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++: ??