このクラス テンプレートは、時刻値から 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」を参照してください。
戻り値
最後に挿入された要素の後の最初の位置を指す反復子。
解説
仮想保護メンバー関数によって、オブジェクト * next
に格納された、_Pt
型の時刻値から、tm
で始まるシーケンシャルな要素が生成されます。 関数は、生成された出力を超える、次に要素を挿入する場所を指定する反復子を返します。
出力は、strftime
要素の系列を配列に生成するために、 によって使用されるものと同じ規則によって、最後の引数を char
として生成されます。 このような 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
未使用。
_注ぐ
スペースのために使用する、CharType
型の文字。
_Pt
出力される時刻と日付の情報。
_Fmt
出力の形式。 有効な値については、「strftime, wcsftime, _strftime_l, _wcsftime_l」を参照してください。
_Mod
形式の修飾子。 有効な値については、「strftime, wcsftime, _strftime_l, _wcsftime_l」を参照してください。
まずは
出力の書式設定文字列の先頭。 有効な値については、「strftime, wcsftime, _strftime_l, _wcsftime_l」を参照してください。
最後
出力の書式設定文字列の末尾。 有効な値については、「strftime, wcsftime, _strftime_l, _wcsftime_l」を参照してください。
戻り値
最後に挿入された要素の後の最初の位置を指す反復子。
解説
最初のメンバー関数は、do_put( next
, _Iosbase
, _Fill
, _Pt
, _Fmt
, _Mod
) を返します。 2 番目のメンバー関数は、* next
++ に、間隔 [ first
, last
) のパーセント (%) 以外のすべての要素をコピーします。 間隔 [, first
] 内の文字 last
が続くパーセントの場合、この関数は代わりに next
= do_put
(next
、_Iosbase
、_Fill
、_Pt
、C、0) を評価し、C をスキップします。ただし、C がセット EOQ# の修飾子文字で、その後に間隔 [C2
, first
] の文字last
が続く場合、関数は代わりに 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) を使用して、その基本オブジェクトを初期化します。