建議使用 Visual Studio 2017

time_put 類別

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

此樣板類別描述可以做為地區設定 facet 的物件,以控制時間值轉換為類型 CharType 的序列。

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

參數

CharType
用於程式內部字元編碼的類型。

OutputIterator
時間 put 函式將其輸出寫入其中的迭代器類型。

如同所有地區設定 facet,靜態物件識別碼有初始儲存值零。 第一次嘗試存取它的儲存的值儲存在唯一的正值識別碼。

建構函式

time_puttime_put 類型物件的建構函式。

Typedefs

char_type類型,用來描述由地區設定使用的字元。
iter_type描述輸出迭代器的類型。

成員函式

do_put虛擬函式,會輸出日期和時間資訊做為 CharType 的序列。
放置輸出日期和時間資訊做為 CharType 的序列。

標頭︰<>>

命名空間: std

類型,用來描述由地區設定使用的字元。

typedef CharType char_type;  

備註

型別是範本參數的同義字CharType

虛擬函式,會輸出為一連串的日期和時間資訊CharTypes。

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

參數

next
要插入的輸出迭代器,其中的字元序列表示的日期和時間。

_Iosbase
未使用。

_Pt
輸出日期和時間資訊。

_Fmt
輸出格式。 請參閱strftime、 wcsftime、 _strftime_l、 _wcsftime_l值是否有效。

_Mod
格式修飾詞。 請參閱strftime、 wcsftime、 _strftime_l、 _wcsftime_l值是否有效。

傳回值

若要插入的最後一個元素之後的第一個位置迭代器。

備註

受保護的虛擬成員函式會產生連續的項目開始next從儲存在物件中的時間值* _Pt,型別的tm。 函數會傳回迭代器指定的下一個位置插入項目超過所產生的輸出。

所使用的相同規則所產生的輸出為strftime,最後一個引數與_Pt,產生一系列的char成陣列的項目。 每個這類char項目會對應至對等項目類型的假設CharType簡單的一對一對應。 如果_Mod等於零,有效的格式為"%f",其中 F 取代_Fmt。 否則,有效的格式為"%MF",其中由取代 M _Mod

範例

請參閱範例,而它會呼叫do_put

描述輸出迭代器的類型。

typedef OutputIterator iter_type;  

備註

型別是範本參數的同義字OutputIterator

輸出為一連串的日期和時間資訊CharTypes。

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;

參數

next
要插入的輸出迭代器,其中的字元序列表示的日期和時間。

_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值是否有效。

傳回值

若要插入的最後一個元素之後的第一個位置迭代器。

備註

The first member function returns do_put( next, _Iosbase, _Fill, _Pt, _Fmt, _Mod). 第二個成員函式會複製到* next + + 的間隔內的任何項目 [ firstlast) 以外的百分比 (%)。 Percent,後面接著字元C間隔中 [ firstlast),函式而是會評估next = do_put( next_Iosbase_Fill_PtC,0),會略過C。如果,不過, C集中 EOQ #,後面接著字元的限定詞字元C2間隔 [ firstlast),函式而是會評估next = do_put( next_Iosbase_Fill_PtC2C) 並且略過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

explicit time_put(size_t _Refs = 0);

參數

_Refs
用來指定物件的記憶體管理類型的整數值。

備註

可能值_Refs參數和其重要性為︰

  • 0︰ 物件存留期由包含它的地區設定。

  • 1︰ 必須以手動方式管理物件存留期。

  • >0︰ 未定義這些值。

建構函式初始化具有其基底物件locale::facet( _Refs)。

<>>
time_base 類別
C + + 標準程式庫中的執行緒安全

顯示: