Класс time_put
Шаблон класса описывает объект, который может служить аспектом языкового стандарта для управления преобразованием значений времени в последовательности типов CharType
.
Синтаксис
template <class CharType,
class OutputIterator = ostreambuf_iterator<CharType>>
class time_put : public locale::facet;
Параметры
CharType
Тип, используемый внутри программы для кодирования символов.
OutputIterator
Тип итератора, в который функции записи времени записывают свои выходные данные.
Замечания
Как и в случае любого другого аспекта языкового стандарта, начальное сохраненное значение статического идентификатора объекта равно нулю. Первая попытка получить доступ к сохраненному значению сохранит уникальное положительное значение в id.
Конструкторы
Конструктор | Description |
---|---|
time_put | Конструктор для объектов типа time_put . |
Определения типов
Введите имя | Description |
---|---|
char_type | Тип, используемый для описания символа, используемого языковым стандартом. |
iter_type | Тип, который описывает итератор вывода. |
Функции элементов
Функция-член | Description |
---|---|
do_put | Виртуальная функция, выводящая информацию о времени и дате в виде последовательности CharType . |
put | Выводит информацию о времени и дате в виде последовательности CharType . |
Требования
Заголовок:<языковой стандарт>
Пространство имен: 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;
Параметры
next
Итератор вывода, куда необходимо вставить последовательность символов, представляющих дату и время.
_Iosbase
Не используется.
_Точка
Выводимые сведения о дате и времени.
_Fmt
Формат вывода См. допустимые значения в разделе strftime, wcsftime, _strftime_l, _wcsftime_l.
_Модуль
Модификатор для формата. См. допустимые значения в разделе strftime, wcsftime, _strftime_l, _wcsftime_l.
Возвращаемое значение
Итератор для первой позиции после последнего вставленного элемента.
Замечания
Виртуальная защищенная функция-член создает последовательные элементы, начиная с next
значений времени, хранящихся в объекте * _Pt
типа tm
. Функция возвращает итератор, обозначающий следующую позицию для вставки элемента после сформированного вывода.
Выходные данные создаются теми же правилами, которые используются 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;
Параметры
next
Итератор вывода, куда необходимо вставить последовательность символов, представляющих дату и время.
_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
, , _Iosbase
_Fill
, _Pt
, _Fmt
). _Mod
Вторая функция-член копирует в * next
++ любой элемент интервала [ first
, , last
кроме процента (%). Для процента, за которым следует символ C в интервале [ first
, ), last
функция вместо этого вычисляет next
= do_put
( next
, , _Iosbase
_Fill
_Pt
C, 0) и пропускает мимо C. Если, однако, C является символом квалификатора из набора EOQ#, за которым следует символ C2
в интервале [ first
, ), last
функция вместо этого вычисляетdo_put
next
= ( 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
Целочисленное значение, используемое для указания типа управления памятью для объекта.
Замечания
Возможные значения параметра _Refs и их значение:
0: время существования объекта управляется языковыми стандартами, которые его содержат.
1: время существования объекта должно управляться вручную.
> 1. Эти значения не определены.
Конструктор инициализирует базовый объект с помощью языкового стандарта::facet(_Refs).
См. также
<локаль>
Класс time_base
Потокобезопасность в стандартной библиотеке C++