time_put 類別
類別範本描述可作為地區設定 Facet 的物件,以控制時間值轉換成 型 CharType
別序列的轉換。
語法
template <class CharType,
class OutputIterator = ostreambuf_iterator<CharType>>
class time_put : public locale::facet;
參數
CharType
用於程式內部字元編碼的類型。
OutputIterator
時間 put 函式將其輸出寫入其中的迭代器類型。
備註
如同所有地區設定 facet,靜態物件識別碼有初始儲存值零。 第一次嘗試存取它的儲存值時,會在 id 中儲存一個唯一的正值。
建構函式
建構函式 | 描述 |
---|---|
time_put | time_put 類型物件的建構函式。 |
Typedefs
類型名稱 | 描述 |
---|---|
char_type | 類型,用來描述由地區設定使用的字元。 |
iter_type | 描述輸出迭代器的類型。 |
成員函式
成員函數 | 描述 |
---|---|
do_put | 虛擬函式,會輸出日期和時間資訊做為 CharType 的序列。 |
put | 輸出日期和時間資訊做為 CharType 的序列。 |
需求
Header:<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
未使用的。
_鉑
輸出的日期和時間資訊。
_Fmt
輸出的格式。 如需有效值,請參閱 strftime、wcsftime、_strftime_l、_wcsftime_l。
_國防部
格式修飾詞。 如需有效值,請參閱 strftime、wcsftime、_strftime_l、_wcsftime_l。
傳回值
插入最後一個元素之後第一個位置的迭代器。
備註
虛擬受保護的成員函式會從儲存在 類型tm
的物件 * _Pt
中的時間值開始next
產生循序專案。 此函式會傳回迭代器,此迭代器指定在所產生的輸出後下一個要插入元素的位置。
輸出是由 所使用的 strftime
相同規則所產生,其最後一個自變數 為 _Pt,以產生數位中的 char
一系列元素。 每個這類 char
專案都假設透過簡單、一對一的對應對應對應至類型的 CharType
對等專案。 如果 _Mod 等於零,有效格式為 「%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
字元。
_鉑
輸出的日期和時間資訊。
_Fmt
輸出的格式。 如需有效值,請參閱 strftime、wcsftime、_strftime_l、_wcsftime_l。
_國防部
格式修飾詞。 如需有效值,請參閱 strftime、wcsftime、_strftime_l、_wcsftime_l。
first
輸出的格化式字串開頭。 如需有效值,請參閱 strftime、wcsftime、_strftime_l、_wcsftime_l。
last
輸出的格化式字串結尾。 如需有效值,請參閱 strftime、wcsftime、_strftime_l、_wcsftime_l。
傳回值
插入最後一個元素之後第一個位置的迭代器。
備註
第一個成員函式會傳回do_put(next
、、_Fill
_Iosbase
、_Pt
、_Fmt
、 _Mod
。 第二個成員函式會複製到間隔 [ 、 last
以外的任何元素 * first
next
++,而不是百分比 。。 針對間隔 [ 中的字元 C 後面百分比,last
函式會改為評估 next
= do_put
(next
、、_Iosbase
、_Pt
_Fill
、C、0) 並略過 C。first
不過,如果 C 是集合 EOQ# 中的限定符字元,後面接著 interval [ 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 參數的可能值及其重要性如下:
0:物件的存留期由包含該物件的地區設定來管理。
1:物件的存留期必須以手動方式管理。
> 1:未定義這些值。
建構函式會使用 locale::facet(_Refs)初始化其基底物件。