最終更新日時(UTC):
が更新

履歴 編集

function
<ctime>

std::ctime(C++26で非推奨)

namespace std {
  char* ctime(const time_t* timer);
}

この関数は、C++26で非推奨となった。代わりにstrftime関数や、<chrono>ライブラリの書式化機能を使用すること。

概要

経過秒を表すtime_t値を、ローカル時間を表すWww Mmm dd hh:mm:ss yyyy\n形式 (曜日、月、日、時、分、秒、年) の固定書式の文字列に変換する。

std::ctime(timer)std::asctime(std::localtime(timer))と等価である。

戻り値

Www Mmm dd hh:mm:ss yyyy\n形式 (曜日、月、日、時、分、秒、年) のヌル終端文字列へのポインタを返す。

戻り値は静的に確保された領域を指すため、asctimectimeの呼び出しのたびに上書きされる可能性がある。

非推奨・削除の詳細

C++26では、C言語側 (C23) で非推奨となったことにあわせて非推奨となった。この関数には以下の問題がある:

  • 結果を静的な内部バッファに書き込んでそのポインタを返すため、スレッドセーフではない
  • 内部バッファは固定長 (26バイト) であり、timerが範囲外の値 (たとえば桁数の大きい年) を表しているとバッファオーバーフローを引き起こす危険性がある

これらの代わりに、フォーマットとバッファサイズを指定できるstrftime関数や、<chrono>ライブラリの書式化機能を使用すること。

#include <iostream>
#include <ctime>

int main()
{
  std::time_t t = std::time(nullptr);
  std::cout << std::ctime(&t) << std::endl;
}

出力例

Fri May 29 14:30:00 2026

バージョン

言語

  • C++03

関連項目

参照