【C++ STL】mktime()関数の使い方を徹底解説!構文・パラメータ・実例つき
本記事では、C++ STLにおけるmktime()関数の仕組み、構文、そして具体的な使用例について詳しく解説します。
mktime()関数とは?
mktime()関数は、C++ STLに標準で用意されている組み込み関数の一つで、<ctime>ヘッダーファイル内で定義されています。この関数の主な役割は、ローカル時間を表すtm構造体を、time_t型の時刻オブジェクトへ変換することです。
動作としては、時刻の入力をマシンのローカルタイムゾーンに変換するlocaltime()関数とちょうど逆の処理を行うものであり、両者は対になる関係といえます。
さらに便利な点として、tm構造体の各メンバーの値が有効な範囲外であったり、tm_dayやtm_ydayが不正な値であった場合でも、この関数が自動的に正しい範囲へ補正してくれます。そのため、日付の正規化処理にも活用できます。
構文
time_t mktime( struct tm* tptr );
パラメータ
この関数は、以下のパラメータを受け取ります。
- tptr − ローカル時間の情報を格納した
tm構造体へのポインタです。
戻り値
引数tptrに対応するtime_t型の値を返します。
使用例
それでは、実際のコードを見てみましょう。以下の例では、1996年9月25日の曜日を求めています。
#include <bits/stdc++.h>
using namespace std;
int main(){
time_t hold;
tm* hold_ptr;
char days[7][20] = {"Sunday", "Monday", "tuesday","Wednesday","Thursday","Friday","Saturday" };
int year = 1996;
int month = 9;
int day = 25;
time(&hold);
hold_ptr = localtime(&hold);
hold_ptr->tm_year = year - 1900;
hold_ptr->tm_mon = month - 1;
hold_ptr->tm_mday = day;
mktime(hold_ptr);
cout<<"Day on 25th September 1996 was "<<days[hold_ptr->tm_wday];
return 0;
}コードの解説
まずtime()関数で現在時刻を取得し、localtime()でtm構造体に変換します。その後、年・月・日の各メンバー(tm_year、tm_mon、tm_mday)を目的の日付に書き換え、mktime()を呼び出すことで、曜日を表すtm_wdayが自動的に計算される仕組みです。
出力結果
Day on 25th September 1996 was Wednesday
このように、1996年9月25日が水曜日(Wednesday)であったことが確認できました。mktime()を活用すれば、このように特定の日付から簡単に曜日を求めることができます。
-
C++ STLのcosh()関数とは?双曲線余弦の求め方をサンプルコード付きで解説
cosh()関数とは? C++のSTLに組み込まれているcosh()関数は、ラジアン単位で与えられた角度の双曲線余弦(ハイパボリック・コサイン)を計算して返す関数です。使用するには、<cmath>ヘッダーをインクルードする必要があります。 双曲線余弦は、数学的に次の式で定義されます。 cosh(x) = (e^x + e^(-x)) / 2 構文 cosh()関数の構文は以下の通りです。 cosh(var) 構文から分かるように、cosh()関数はfloat型、double型、long double型のいずれかの引数varを受け取ります。そして、その双曲線余弦を返します。なお、引
-
C++ STLのsinh()関数の使い方を徹底解説
sinh()関数とはsinh()関数は、ラジアンで指定された値の双曲線正弦(ハイパボリックサイン)を返す関数です。C++のSTL(標準テンプレートライブラリ)に組み込まれており、<cmath>ヘッダをインクルードすることで利用できます。双曲線正弦は、以下の数式で定義されます。sinh(x) = (e^x − e^−x) / 2sinh()関数の構文sinh()関数の構文は以下のとおりです。sinh(var)構文からわかるように、sinh()関数はfloat型、double型、long double型のいずれかのパラメータvarを受け取ります。戻り値は、varの双曲線正弦です。sin