C++ 入門||C++ リファレンス||C++ 日付と時刻

C++ リファレンス

C++ リファレンス

参照変数はエイリアスです。つまり、既存の変数の別の名前です。変数への参照を初期化すると、参照名または変数名を使用して変数を指すことができます。

C++ 参照とポインター

参照はポインターと混同されやすく、主に次の 3 つの違いがあります。

  • null 参照はありません。参照は、有効なメモリにリンクされている必要があります。
  • オブジェクトへの参照が初期化されると、別のオブジェクトを指すことはできません。ポインターは、いつでも別のオブジェクトを指すことができます。
  • 参照は作成時に初期化する必要があります。ポインタはいつでも初期化できます。

C++ で参照を作成する

変数名は、変数がメモリ位置に付けるラベルと考えてください。参照は、変数がメモリ位置に付ける 2 番目のラベルと考えることができます。したがって、元の変数名または参照によって、変数の内容にアクセスできます。例えば:

int i = 17;
double d =23.5;

i と d の参照変数を次のように宣言できます。

int& r = i;
double& s = d;

これらの宣言では、 & は参照として読み取られます。したがって、最初の宣言は「r は i に初期化された整数への参照です」と読み取ることができ、2 番目の宣言は「d に初期化された double への参照です」と読み取ることができます。次の例では、int 参照と double 参照を使用しています。

#include <iostream>

using namespace std;
 
int main (){
    // 声明简单的变量
    int    i;
    double d; 
    // 声明引用变量
    int&    r = i;
    double& s = d;
 
    i = 5;
    cout << "Value of i : " << i << endl;
    cout << "Value of i reference : " << r  << endl;
 
    d = 11.7;
    cout << "Value of d : " << d << endl;
    cout << "Value of d reference : " << s  << endl;
   
    return 0;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます。

i の値 : 5 
i の値 参照 : 5 
d の値 : 11.7 
d の値 参照 : 11.7

参照は、関数のパラメーター リストと関数の戻り値でよく使用されます。C++ プログラマーが知っておく必要がある C++ 参照に関連する 2 つの重要な概念を以下に示します。

コンセプト 説明
パラメータとして参照を取ります C++ では、関数への参照をパラメーターとして渡すことがサポートされています。これは、通常のパラメーターを渡すよりも安全です。
参照を返す 参照は、他のデータ型と同様に C++ 関数から返すことができます。

C++ 日付と時刻

C++ 日付と時刻

C++ 標準ライブラリは、いわゆる日付型を提供しません。C++ は、日付と時刻を操作するために、C 言語から構造と関数を継承しています。日付と時刻に関連する関数と構造体を使用するには、C++ プログラムで <ctime> ヘッダー ファイルを参照する必要があります。

時間に関連する型には、clock_t、time_t、size_t、 および tmの 4 つがあります。タイプ clock_t、size_t、および time_t は、システムの時刻と日付をある種の整数として表すことができます。

構造体型 tm は、 日付と時刻を C 構造体の形式で保存します。tm 構造体の定義は次のとおりです。

struct tm { 
    int tm_sec; // 秒、通常は 0 ~ 59 の範囲ですが、最大 61 まで許容されます
    int tm_min; // 分、0 ~ 59 の範囲
    int tm_hour; // 時間、0 ~ 23 の範囲
    int tm_mday; / / 1 から 31 の範囲の日付
    int tm_mon; // 0 から 11 の範囲の月
    int tm_year; // 1900 年からの年数
    int tm_wday; // 0 から 6 の範囲の曜日from Sunday 
    int tm_yday; // 1 月 1 日から数えて 0 ~ 365 の範囲の年間通算日
    int tm_isdst; // サマータイム
}

以下は、C/C++ の日付と時刻に関連する重要な関数です。これらの関数はすべて C/C++ 標準ライブラリの一部です。C++ 標準ライブラリで各関数の詳細を確認できます。

シリアルナンバー 機能と説明
1 time_t time(time_t *time); 
この関数は、システムの現在のカレンダー時刻 (1970 年 1 月 1 日から経過した秒数) を返します。システムに時間がない場合は .1 を返します。
2 char *ctime(const time_t *time);これは 、日月年時間:分:秒年\n
の形式で、現地時間を表す文字列ポインタを返します 
3 struct tm *localtime(const time_t *time);この関数は、ローカル時間を表す tm
構造体へのポインタを返します  。
4 clock_t clock(void); 
この関数は、プログラム実行の開始 (通常はプログラムの開始) からプロセッサ クロックが使用した時間を返します。時間が利用できない場合は .1 を返します。
5 char * asctime ( const struct tm * time ); 
この関数は、文字列へのポインタを返します。このポインタには、time が指す構造体に格納された情報が含まれており、戻り形式は次のとおりです: 日 月 日 時間:分:秒 年\n \ 0.
6 struct tm *gmtime(const time_t *time); 
この関数は時間へのポインタを返し、時間はグリニッジ標準時 (GMT) とも呼ばれる協定世界時 (UTC) で表される tm 構造体です。
7 time_t mktime(struct tm *time); 
この関数は、time が指す構造体に格納されている時刻に相当するカレンダー時刻を返します。
8 double difftime ( time_t time2, time_t time1 ); 
この関数は、time1 と time2 の差を秒単位で返します。
9 size_t strftime(); 
この関数は、日付と時刻を指定された形式にフォーマットするために使用できます。

現在の日時

次の例では、ローカル時間と協定世界時 (UTC) を含む、現在のシステムの日付と時刻を取得します。

#include <iostream>
#include <ctime>

using namespace std;

int main( )
{
    // 基于当前系统的当前日期/时间
    time_t now = time(0);
   
    // 把 now 转换为字符串形式
    char* dt = ctime(&now);

    cout << "本地日期和时间:" << dt << endl;

    // 把 now 转换为 tm 结构
    tm *gmtm = gmtime(&now);
    dt = asctime(gmtm);
    cout << "UTC 日期和时间:"<< dt << endl;
}

上記のコードをコンパイルして実行すると、次の結果が生成されます。

ローカルの日付と時刻: 2011 年 1 月 8 日土曜日 20:07:41 

UTC 日付と時刻: 2011 年 1 月 9 日日曜日 03:07:41

struct tm を使用して時刻をフォーマットする

tm 構造体は、C/C++ で日付と時刻に関連する操作を処理する場合に特に重要です。tm 構造体は、日付と時刻を C 構造体として保持します。ほとんどの時間関連の関数は tm 構造体を使用します。次の例では、tm 構造体とさまざまな日付と時刻に関連する関数を使用しています。

構造体の使用を練習する前に、C 構造体の基本的な理解と、矢印 -> 演算子を使用して構造体メンバーにアクセスする方法を理解しておく必要があります。

#include <iostream>
#include <ctime>

using namespace std;

int main(){
    // 基于当前系统的当前日期/时间
    time_t now = time(0);
    cout << "1970年1月1日到目前经过的秒数:" << now << endl;

    tm *ltm = localtime(&now);

    // 输出 tm 结构的各个组成部分
    cout << "年: "<< 1900 + ltm->tm_year << endl;
    cout << "月: "<< 1 + ltm->tm_mon<< endl;
    cout << "日: "<<  ltm->tm_mday << endl;
    cout << "时间: "<< 1 + ltm->tm_hour << ":";
    cout << 1 + ltm->tm_min << ":";
    cout << 1 + ltm->tm_sec << endl;
} 

上記のコードをコンパイルして実行すると、次の結果が生成されます。

1970 年 1 月 1 日から現在までの経過秒数: 1524456057
年: 2018
月: 4 日
: 23
時刻: 5:1:58

おすすめ

転載: blog.csdn.net/m0_69824302/article/details/130067814