time_put-Klasse

Die Klassenvorlage beschreibt ein Objekt, das als Gebietsschema-Facet dienen kann, um Konvertierungen von Zeitwerten in Sequenzen des Typs 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.

Bemerkungen

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 ein eindeutiger positiver Wert in id 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;

Bemerkungen

Der Type stellt ein Synonym für den Vorlagenparameter CharType dar.

time_put::do_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.

Bemerkungen

Die virtuelle geschützte Memberfunktion generiert sequenzielle Elemente beginnend next von Zeitwerten, die im Objekt * _Pt, vom 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 durch dieselben Regeln generiert, die von strftime, mit einem letzten Argument von _Pt, zum Generieren einer Reihe von char Elementen in ein Array verwendet werden. Jedes solche char Element wird angenommen, dass ein entsprechendes Element vom Typ CharType durch eine einfache, 1-1-Zuordnung zugeordnet wird. Wenn _Mod null entspricht, ist 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;

Bemerkungen

Der Type stellt ein Synonym für den Vorlagenparameter OutputIterator dar.

time_put::put

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.

_Fill
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.

Bemerkungen

Die erste Memberfunktion gibt do_put(next, _Pt_Fmt_Iosbase_Fill) _Modzurück. Die zweite Memberfunktion kopiert in * next ++ jedes Element im Intervall [ first, last) außer einem Prozentwert (%). Für ein Prozent, gefolgt von einem Zeichen C im Intervall [ firstlast, ), wird die Funktion stattdessen ausgewertet next = do_put( next, _Iosbase_Fill, _PtC, 0) und übersprungen von C. Wenn C jedoch ein Qualifiziererzeichen aus dem Satz EOQ#ist, gefolgt von einem Zeichen C2 im Intervall [ lastfirst, ), wird die Funktion stattdessen ausgewertetdo_putnext = ( next, _Fill_Pt_IosbaseC2C) und übersprungen.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.

Bemerkungen

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 gebietsschema::facet(_Refs).

Weitere Informationen

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