Share via


time_put クラス

このクラス テンプレートは、時刻値から CharType 型のシーケンスへの変換を制御するためにロケール ファセットとして使用できるオブジェクトを表します。

構文

template <class CharType,
    class OutputIterator = ostreambuf_iterator<CharType>>
class time_put : public locale::facet;

パラメーター

CharType
文字をエンコードするためにプログラム内で使用される型。

OutputIterator
時刻の put 関数が出力を書き込む反復子の型。

解説

すべてのロケールのファセットと同様、静的オブジェクト ID に最初に格納されている値は 0 です。 格納されている値に初めてアクセスしようとすると、id に一意の正の値が格納されます。

コンストラクター

コンストラクター 説明
time_put time_put 型のオブジェクトのコンストラクター。

Typedefs

型名 説明
char_type ロケールによって使用される文字を表すために使用される型。
iter_type 出力反復子を表す型。

メンバー関数

メンバー関数 説明
do_put 時刻と日付の情報を CharType のシーケンスとして出力する仮想関数。
put 時刻と日付の情報を CharType のシーケンスとして出力します。

必要条件

ヘッダー:<locale>

名前空間: std

time_put::char_type

ロケールによって使用される文字を表すために使用される型。

typedef CharType char_type;

解説

この型は、テンプレート パラメーター CharTypeのシノニムです。

time_put::d o_put

時刻と日付の情報を CharType のシーケンスとして出力する仮想関数。

virtual iter_type do_put(
    iter_type next,
    ios_base& _Iosbase,
    const tm* _Pt,
    char _Fmt,
    char _Mod = 0) const;

パラメーター

次へ
時刻と日付を表す文字のシーケンスが挿入される出力反復子。

_Iosbase
未使用。

_Pt
出力される時刻と日付の情報。

_Fmt
出力の形式。 有効な値については、「strftime, wcsftime, _strftime_l, _wcsftime_l」を参照してください。

_Mod
形式の修飾子。 有効な値については、「strftime, wcsftime, _strftime_l, _wcsftime_l」を参照してください。

戻り値

最後に挿入された要素の後の最初の位置を指す反復子。

解説

仮想保護メンバー関数によって、オブジェクト * _Pt に格納された、tm 型の時刻値から、next で始まるシーケンシャルな要素が生成されます。 関数は、生成された出力を超える、次に要素を挿入する場所を指定する反復子を返します。

出力は、char 要素の系列を配列に生成するために、strftime によって使用されるものと同じ規則によって、最後の引数を _Pt として生成されます。 このような char 要素は、単純な一対一のマッピングで CharType 型の同等の要素にマップされると想定されます。 _Mod が 0 に等しい場合、有効な形式は "%F" で、F は _Fmt に置き換えられます。 それ以外の場合、有効な形式は "%MF" で、M は _Mod に置き換えられます。

put の例 (do_put を呼び出す) を参照してください。

time_put::iter_type

出力反復子を表す型。

typedef OutputIterator iter_type;

解説

この型は、テンプレート パラメーター OutputIteratorのシノニムです。

time_put::p ut

時刻と日付の情報を CharType のシーケンスとして出力します。

iter_type put(iter_type next,
    ios_base& _Iosbase,
    char_type _Fill,
    const tm* _Pt,
    char _Fmt,
    char _Mod = 0) const;

iter_type put(iter_type next,
    ios_base& _Iosbase,
    char_type _Fill,
    const tm* _Pt,
    const CharType* first,
    const CharType* last) const;

パラメーター

次へ
時刻と日付を表す文字のシーケンスが挿入される出力反復子。

_Iosbase
未使用。

_Fill
スペースのために使用する、CharType 型の文字。

_Pt
出力される時刻と日付の情報。

_Fmt
出力の形式。 有効な値については、「strftime, wcsftime, _strftime_l, _wcsftime_l」を参照してください。

_Mod
形式の修飾子。 有効な値については、「strftime, wcsftime, _strftime_l, _wcsftime_l」を参照してください。

first
出力の書式設定文字列の先頭。 有効な値については、「strftime, wcsftime, _strftime_l, _wcsftime_l」を参照してください。

last
出力の書式設定文字列の末尾。 有効な値については、「strftime, wcsftime, _strftime_l, _wcsftime_l」を参照してください。

戻り値

最後に挿入された要素の後の最初の位置を指す反復子。

解説

最初のメンバー関数は、do_put( next, _Iosbase, _Fill, _Pt, _Fmt, _Mod) を返します。 2 番目のメンバー関数は、* next ++ に、間隔 [ first, last) のパーセント (%) 以外のすべての要素をコピーします。 間隔 [ first, last) 内の、文字 C の前のパーセントについては、関数は、代わりに、next = do_put( next, _Iosbase, _Fill, _Pt, C, 0) を評価し、C をスキップします。ただし、C が設定された EOQ# からの修飾子文字で、かつ、間隔 [ first, last) の中で文字 C2 が続く場合、関数は、代わりに、next = do_put( next, _Iosbase, _Fill, _Pt, C2, C) を評価し、C2 をスキップします。

// time_put_put.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
#include <time.h>
using namespace std;
int main( )
{
   locale loc;
   basic_stringstream<char> pszPutI;
   ios_base::iostate st = 0;
   struct tm t;
   memset( &t, 0, sizeof( struct tm ) );

   t.tm_hour = 5;
   t.tm_min = 30;
   t.tm_sec = 40;
   t.tm_year = 00;
   t.tm_mday = 4;
   t.tm_mon = 6;

   pszPutI.imbue( loc );
   char *pattern = "x: %X %x";
   use_facet <time_put <char> >
   (loc).put(basic_ostream<char>::_Iter(pszPutI.rdbuf( )),
          pszPutI, ' ', &t, pattern, pattern+strlen(pattern));

      cout << "num_put( ) = " << pszPutI.rdbuf( )->str( ) << endl;

      char strftimebuf[255];
      strftime(&strftimebuf[0], 255, pattern, &t);
      cout << "strftime( ) = " << &strftimebuf[0] << endl;
}
num_put( ) = x: 05:30:40 07/04/00
strftime( ) = x: 05:30:40 07/04/00

time_put::time_put

time_put 型のオブジェクトのコンストラクター。

explicit time_put(size_t _Refs = 0);

パラメーター

_Refs
オブジェクトのメモリ管理の種類を指定するために使用する整数値。

解説

_Refs パラメーターの可能な値とその重要性は次のとおりです。

  • 0: オブジェクトの有効期間はそれが含まれるロケールによって管理されます。

  • 1: オブジェクトの有効期間を手動で管理する必要があります。

  • > 1: これらの値は定義されていません。

コンストラクターは、locale::facet(_Refs) を使用して、その基本オブジェクトを初期化します。

関連項目

<ロケール>
time_base クラス
C++ 標準ライブラリ内のスレッド セーフ