time_put-Klasse
Die Klassenvorlage beschreibt ein Objekt, das als Gebietsschema-Facet dienen kann, um Konvertierungen von Zeitwerten in Sequenzen des Typs CharType
zu 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 tm
gespeichert 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
) _Mod
zurü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 [ first
last
, ), wird die Funktion stattdessen ausgewertet next
= do_put
( next
, _Iosbase
_Fill
, _Pt
C, 0) und übersprungen von C. Wenn C jedoch ein Qualifiziererzeichen aus dem Satz EOQ#ist, gefolgt von einem Zeichen C2
im Intervall [ last
first
, ), wird die Funktion stattdessen ausgewertetdo_put
next
= ( next
, _Fill
_Pt
_Iosbase
C2
C) 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