Spec-Zone.ru › C++

std::time_put

Определён в заголовочном файле <locale>
template< 
    class CharT, 
    class OutputIt = std::ostreambuf_iterator<CharT> 
> class time_put;

Шаблон класса std::time_put инкапсулирует правила форматирования даты и времени. Манипулятор ввода-вывода std::put_time использует фасет std::time_put локали потока ввода-вывода для создания текстового представления объекта std::tm.

cpp/locale/time base cpp/locale/locale/facet

Диаграмма наследования

Если стандартная библиотека не гарантирует наличие специализации std::time_put (см. ниже), поведение её put() и do_put() не гарантируется в соответствии со спецификацией.

Специализации

Стандартная библиотека гарантированно предоставляет следующие специализации (они должны быть реализованы любым объектом локали):

Определены в заголовочном файле <locale>
std::time_put<char> создаёт узкие строковые представления даты и времени
std::time_put<wchar_t> создаёт широкие строковые представления даты и времени

Кроме того, стандартная библиотека также гарантированно предоставляет все специализации, удовлетворяющие следующим требованиям к типам:

  • CharT — это один из типов char и wchar_t, и
  • OutputIt должен удовлетворять требованиям LegacyOutputIterator.

Вложенные типы

Тип Определение
char_type CharT
iter_type OutputIt

Члены-данные

Член Описание
std::locale::id id [static] идентификатор фасета

Функции-члены

(конструктор)
создаёт новый фасет time_put
(открытая функция-член)
(деструктор)
уничтожает фасет time_put
(защищённая функция-член)
put
вызывает do_put
(открытая функция-член)

Защищённые функции-члены

do_put
[виртуальная]
форматирует дату/время и записывает результат в выходной поток
(виртуальная защищённая функция-член)

Пример

#include <codecvt>
#include <ctime>
#include <iomanip>
#include <iostream>

int main()
{
    std::time_t t = std::time(nullptr);
    std::wbuffer_convert<std::codecvt_utf8<wchar_t>> conv(std::cout.rdbuf());
    std::wostream out(&conv);
    out.imbue(std::locale("ja_JP.utf8"));
    
    // this I/O manipulator std::put_time uses std::time_put<wchar_t>
    out << std::put_time(std::localtime(&t), L"%A %c") << '\n';
}

Вывод:

水曜日 2011年11月09日 12時32分05秒

См. также

time_put_byname
представляет предоставляемый системой std::time_put для именованной локали
(шаблон класса)
time_get
разбирает значения времени/даты из входной последовательности символов в std::tm
(шаблон класса)
put_time
(C++11)
форматирует и выводит значение даты/времени в соответствии с указанным форматом
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/locale/time_put

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API