time_put-Klasse

Die Klassenvorlage beschreibt ein Objekt, das als Gebietsschema-Facet dienen kann, um Konvertierungen von Zeitwerten in Sequenzen vom Typ CharTypezu steuern.

Syntax

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

Parameter

CharType
Der Typ, der innerhalb eines Programms verwendet wird, um Zeichen zu codieren.

OutputIterator
Der Typ des Iterators, in den die Time-Put-Funktionen ihre Ausgabe schreiben.

Hinweise

Wie bei jedem Gebietsschemafacet hat die statische Objekt-ID einen anfänglichen gespeicherten Wert von NULL. Beim ersten Versuch, auf den gespeicherten Wert zuzugreifen, wird in id ein eindeutiger positiver Wert gespeichert.

Konstruktoren

Konstruktor Beschreibung
time_put Der Konstruktor für Objekte des Typs time_put.

TypeDefs

Typname Beschreibung
char_type Ein Typ, mit dem ein Zeichen beschrieben wird, das von einem Gebietsschema verwendet wird.
iter_type Ein Typ, der einen Ausgabeiterator beschreibt.

Memberfunktionen

Memberfunktion Beschreibung
do_put Eine virtuelle Funktion, die Zeit- und Datumsinformationen als Sequenz von CharType-Objekten ausgibt.
put Gibt Zeit- und Datumsinformationen als Sequenz von CharType-Objekten aus.

Anforderungen

Header:<locale>

Namespace: std

time_put::char_type

Ein Typ, mit dem ein Zeichen beschrieben wird, das von einem Gebietsschema verwendet wird.

typedef CharType char_type;

Hinweise

Der Type stellt ein Synonym für den Vorlagenparameter CharTypedar.

time_put::d o_put

Eine virtuelle Funktion, die Zeit- und Datumsinformationen als Sequenz von CharType-Objekten ausgibt.

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

Parameter

Weiter
Ein Ausgabeiterator, in den die Zeichensequenz für Zeit und Datum eingefügt werden soll.

_Iosbase
Nicht verwendet.

_Pt
Die Zeit- und Datumsinformationen, die ausgegeben werden.

_Fmt
Das Format der Ausgabe. Siehe strftime, wcsftime, _strftime_l, _wcsftime_l für gültige Werte.

_Mod
Ein Modifizierer für das Format. Siehe strftime, wcsftime, _strftime_l, _wcsftime_l für gültige Werte.

Rückgabewert

Ein Iterator an die erste Position hinter dem letzten eingefügten Element.

Hinweise

Die virtuelle geschützte Memberfunktion generiert sequenzielle Elemente beginnend next mit zeitwerten, die im Objekt * _Ptvom Typ tmgespeichert sind. Die Funktion gibt einen Iterator zurück, der die nächste Stelle zum Einfügen eines Elements nach der generierten Ausgabe festlegt.

Die Ausgabe wird von den gleichen Regeln generiert, die von strftime, mit einem letzten Argument von _Pt, zum Generieren einer Reihe von char Elementen in einem Array verwendet werden. Jedes dieser char Elemente wird angenommen, um einem entsprechenden Element vom Typ CharType durch eine einfache 1:1-Zuordnung zuzuordnen. Wenn _Mod gleich Null ist, lautet das effektive Format "%F", wobei F durch _Fmt ersetzt wird. Andernfalls ist das effektive Format "%MF", wobei M durch _Mod ersetzt wird.

Beispiel

Siehe das Beispiel für put, mit dem do_put aufgerufen wird.

time_put::iter_type

Ein Typ, der einen Ausgabeiterator beschreibt.

typedef OutputIterator iter_type;

Hinweise

Der Type stellt ein Synonym für den Vorlagenparameter OutputIteratordar.

time_put::p ut

Gibt Zeit- und Datumsinformationen als Sequenz von CharType-Objekten aus.

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;

Parameter

Weiter
Ein Ausgabeiterator, in den die Zeichensequenz für Zeit und Datum eingefügt werden soll.

_Iosbase
Nicht verwendet.

_Füllen
Das Zeichen des Typs CharType , der für den Abstand verwendet wird.

_Pt
Die Zeit- und Datumsinformationen, die ausgegeben werden.

_Fmt
Das Format der Ausgabe. Siehe strftime, wcsftime, _strftime_l, _wcsftime_l für gültige Werte.

_Mod
Ein Modifizierer für das Format. Siehe strftime, wcsftime, _strftime_l, _wcsftime_l für gültige Werte.

first
Der Anfang der Formatierungszeichenfolge für die Ausgabe. Siehe strftime, wcsftime, _strftime_l, _wcsftime_l für gültige Werte.

last
Das Ende der Formatierungszeichenfolge für die Ausgabe. Siehe strftime, wcsftime, _strftime_l, _wcsftime_l für gültige Werte.

Rückgabewert

Ein Iterator an die erste Position hinter dem letzten eingefügten Element.

Hinweise

Die erste Memberfunktion gibt do_put(next, , _Iosbase, _Fill, _Pt, ) _Fmt_Modzurück. Die zweite Memberfunktion kopiert in * next ++ alle Elemente im Intervall [ first, last) außer einem Prozentwert (%). Bei einem Prozentwert gefolgt von einem Zeichen C im Intervall [ first, last), wertet die Funktion stattdessen next = do_put( next, , _Iosbase, , _FillC_Pt, 0) aus und überspringt C. Wenn C jedoch ein Qualifiziererzeichen aus dem Satz EOQ# ist, gefolgt von einem Zeichen C2 im Intervall [ first, last), wertet die Funktion stattdessendo_putnext = ( next, , , _Iosbase, _Pt_Fill, , C2C) aus und überspringt die Vergangenheit .C2

Beispiel

// 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

Konstruktor für Objekte des Typs time_put.

explicit time_put(size_t _Refs = 0);

Parameter

_Refs
Integerwert, der zum Angeben des Speicherverwaltungstyps für das Objekt verwendet wird.

Hinweise

Die möglichen Werte für den _Refs Parameter und deren Bedeutung sind:

  • 0: Die Lebensdauer des Objekts wird von den Gebietsschemas verwaltet, in denen es enthalten ist.

  • 1: Die Lebensdauer des Objekts muss manuell verwaltet werden.

  • > 1: Diese Werte sind nicht definiert.

Der Konstruktor initialisiert sein Basisobjekt mit locale::facet(_Refs).

Siehe auch

<locale>
time_base-Klasse
Threadsicherheit in der C++-Standardbibliothek